मुझे दो बड़े डेटाबेसों के बीच डेटा सिंक्रनाइज़ेशन को लागू करना होगा जिसमें पूरी तरह से अलग संरचनाएं हैं। मूल रूप से, मुझे पहले डेटाबेस में अलग-अलग तालिकाओं में उत्पादों के बारे में कुछ डेटा को इकट्ठा करने और दूसरे डेटाबेस में अन्य तालिकाओं के लिए उन्हें फिर से व्यवस्थित करने की आवश्यकता है।
पहली बार मेरे उत्पाद बनाना बहुत जटिल नहीं है। लेकिन मैं प्रत्येक उत्पाद के बारे में कुछ विशिष्ट डेटा - सभी डेटा नहीं - को अपडेट करने का तरीका ढूंढ रहा हूं।
जाहिर है, कुछ मुद्दे हैं जो इसे मुश्किल बनाते हैं।
- मुझे चुनिंदा क्वेरीज़ के अलावा स्रोत डेटाबेस पर कुछ भी करने की अनुमति नहीं है।
- लक्ष्य डेटाबेस पर, मैं सामान्य प्रश्न (चयन, अद्यतन, सम्मिलित करना, बना सकता हूं) कर सकता हूं, लेकिन मैं मौजूदा संरचना / तालिकाओं को संशोधित नहीं कर सकता।
- लक्ष्य और स्रोत db में पूरी तरह से अलग संरचनाएं हैं, टेबल बिल्कुल समान नहीं हैं, इसलिए डेटा को वास्तव में पुनर्व्यवस्थित करना होगा - तालिकाओं की तुलना करना काम करेगा।
- लक्ष्य डेटाबेस एक MySQL सर्वर का उपयोग करता है - स्रोत DB2 हो सकता है।
- कहीं भी "अपडेटेड टाइम" फ़ील्ड नहीं हैं।
तो पूरी प्रक्रिया को एक एकल पायथन (आदर्श) स्क्रिप्ट में करने की आवश्यकता है।
मैं लक्ष्य डेटाबेस में अद्यतन करने के लिए फ़ील्ड्स के आधार पर प्रत्येक उत्पाद के लिए एक हैश बनाने के बारे में सोचता हूं: md5 (कोड + विवरण + आपूर्तिकर्ता + लगभग 10 अन्य फ़ील्ड)। स्रोत डेटाबेस से दैनिक आधार पर एक ही डेटा पर आधारित एक नया हैश बनाया जाएगा। मैं प्रदर्शन के उद्देश्य के लिए सभी हैश को एक ही तालिका (आइटम कोड, current_hash, old_hash) में संग्रहीत करूंगा। फिर उत्पाद की तुलना करें और अपडेट करें यदि नया हैश पुराने से अलग है।
लगभग 500 000 उत्पाद हैं इसलिए मैं प्रदर्शन के बारे में थोड़ा चिंतित हूं।
क्या यह जाने का अच्छा तरीका है?