2012-08-14 16 views
10

मुझे पेजिनेशन के साथ एक HTML तालिका बनाने की आवश्यकता है। डेटा 2 अलग-अलग स्रोतों से आता है (एक ओरेकल जैसे 2 अलग-अलग डेटाबेस से 2 टेबल हो सकता है और दूसरा MySQL है) जिसे आप शामिल चयन कथन का उपयोग नहीं कर सकते हैं। इसे और अधिक जटिल बनाने के लिए, मुझे आरोही क्रम में टाइमस्टैम्प द्वारा क्रमबद्ध डेटा प्रदर्शित करना होगा (संपत्ति में से एक टाइमस्टैम्प है)।एकाधिक स्रोतों से अंकन बनाना

उदाहरण के लिए, स्रोत ए में 45 रिकॉर्ड हैं, स्रोत बी में 55 रिकॉर्ड हैं। तो तालिका 100 के कुल रिकॉर्ड प्रदर्शित करेगी, लेकिन केवल एक ही समय में 15 रिकॉर्ड बताएं। तो 7 पेज होना चाहिए (15 रिकॉर्ड वाले 6 पेज और 10 रिकॉर्ड वाले 1 पेज)।

उपर्युक्त उदाहरण केवल 100 रिकॉर्ड हैं जो स्मृति को उन सभी को लोड करना आसान हो सकता है। लेकिन वास्तविक उत्पादन में, यह हजारों या लाखों रिकॉर्ड हो सकता है। क्या कोई भी एल्गोरिदम जानता है जिसका मैं उपयोग कर सकता हूं? पैरामीटर जो मैं प्रदान कर सकता हूं वे पृष्ठ संख्या और प्रति पृष्ठ रिकॉर्ड की संख्या हैं।

+2

टेबल ए और बी टाइम्सस्टैम्प द्वारा क्रमबद्ध हैं? –

+0

प्रत्येक तालिका स्रोत में टाइमस्टैम्प कॉलम है, – Wins

उत्तर

3

जैसा कि मैं समझता हूं, आपकी चिंता स्मृति है।

यदि व्यक्तिगत टेबल (ए और बी) टाइमस्टैम्प द्वारा क्रमबद्ध नहीं होते हैं तो आपको अपने सभी रिकॉर्ड्स को एक फ़ाइल में विलय करने की आवश्यकता होती है और फिर कुछ फ़ाइल-आधारित सॉर्टिंग एल्गोरिदम (कुछ मर्जोर्ट जैसे कुछ का उपयोग करें, एक पास में आपको सॉर्ट किए गए जोड़े मिलते हैं रिकॉर्ड, दूसरे पास में आपको 4 एस सॉर्ट किया जाता है)। जब आपके पास टाइमस्टैम्प के आरोही क्रम में सभी रिकॉर्ड्स वाली फ़ाइल होती है तो आप इसे पृष्ठों में विभाजित कर सकते हैं।

यदि तालिकाएं पहले से ही क्रमबद्ध हैं एन में क्रमबद्ध अनुक्रमों को विलय करें। मेरा सुझाव है कि आप किसी प्रकार के Heap को व्यवस्थित करने के लिए व्यवस्थित करें कि एन स्रोतों में से कौन सा स्रोत सबसे छोटा टाइमस्टैम्प वाला आइटम है। स्यूडोकोड में यह इस तरह दिखेगा:

for i=1,N 
{ 
    Add the 1st record from each table to the Heap 
} 
while(Heap not empty) 
{ 
    x = take the smallest item from the heap, noting which table j this record belonged to 
    Add x to output 
    if (the j-th table is not completely processed) 
    { 
    take the next value from the j-th table and insert it into the heap 
    } 
} 

जटिलता हे (एम * logn) जहां एम तालिकाओं में रिकॉर्ड की कुल संख्या है और एन तालिकाओं की संख्या है। यह पूरी ढेर चीज केवल परेशानी के लायक है अगर एन पर्याप्त रूप से बड़ा है (मेरा अनुमान ~ 100 है)। अन्यथा मैं रैखिक खोज और ओ (एन * एम) के साथ जाऊंगा।

+0

पूछताछ करते समय मैं उन्हें सॉर्ट कर सकता हूं आपके उत्तर के लिए धन्यवाद। मैंने इस मुद्दे पर अधिक सटीक तस्वीर देने के लिए मेरे प्रश्न को दोहराया है। क्या आप फाइल-आधारित सॉर्टिंग पर अधिक विस्तार से विस्तार कर सकते हैं? इसका मतलब है कि मुझे ब्राउजर से आने वाले अनुरोध पर हर बार उन्हें फाइल में स्टोर करना होगा, इसे टेबल-आधारित सॉर्टिंग के लिए दोनों टेबलों को पूछने और अस्थायी फ़ाइल बनाने की आवश्यकता होगी? – Wins

संबंधित मुद्दे