मेरे पास XML प्रारूप में लाखों रिकॉर्ड के साथ large datasets है। ये डेटासेट समय के एक निश्चित बिंदु तक डेटाबेस के पूर्ण डेटा डंप हैं।मैं दो बड़े डेटासेट के बीच अंतर कैसे निर्धारित कर सकता हूं?
दो डंपों के बीच नई प्रविष्टियां जोड़ दी गई हैं और मौजूदा वाले को संशोधित या हटा दिया गया हो सकता है। मान लें कि स्कीमा अपरिवर्तित बनी हुई है और प्रत्येक प्रविष्टि में एक अद्वितीय आईडी है।
इनमें से दो डेटासेट (हटाने और अपडेट सहित) के बीच डेल्टा निर्धारित करने का सबसे अच्छा तरीका क्या होगा?
मेरी योजना आरडीबीएमएस में सबकुछ लोड करना और वहां से जाना है।
सबसे पहले, पुराने डंप को लोड करें। फिर, नए डंप को एक अलग स्कीमा में लोड करें, लेकिन ऐसा करने में मैं जांच करूंगा कि प्रविष्टि नई है या मौजूदा प्रविष्टि का अपडेट है या नहीं। यदि हां, तो मैं "परिवर्तन" नामक एक नई तालिका (आईडी) पर आईडी लॉग करूंगा।
यह सब करने के बाद, मैं सभी प्रविष्टियों के माध्यम से पुराने डंप के माध्यम से जाउंगा और देख सकता हूं कि उनके पास नए डंप पर एक मिलान रिकॉर्ड (यानी एक ही आईडी) है या नहीं। यदि नहीं, तो परिवर्तनों पर लॉग इन करें।
आईडी द्वारा रिकॉर्ड देखने का मानना O(log n)
ऑपरेशन है, इससे मुझे O(n log n)
समय में सब कुछ करने की अनुमति देनी चाहिए।
क्योंकि मैं केवल आईडी और अंतिम संशोधन तिथि के साथ रिकॉर्ड की उपस्थिति या अनुपस्थिति को देखकर अंतर निर्धारित कर सकता हूं, मैं मुख्य स्मृति में सबकुछ भी लोड कर सकता हूं। समय जटिलता वही होगी, लेकिन कम डिस्क I/O के अतिरिक्त लाभ के साथ, जो परिमाण के आदेशों से इसे तेजी से बनाना चाहिए।
सुझाव? (नोट: यह किसी भी चीज़ से प्रदर्शन प्रश्न अधिक है)
"क्योंकि मैं निर्धारित कर सकते हैं ... जो इस तेजी से परिमाण के आदेश से बनाना चाहिए"। "यह किसी भी चीज़ से प्रदर्शन प्रश्न से अधिक है"। ...स्मृति में यह करने से बहुत तेज़ हो जाएगा, और आप मुख्य रूप से प्रदर्शन से चिंतित हैं। लगता है जैसे आपने अपने प्रश्न का उत्तर दिया। – Gerrat