2009-07-24 15 views
5

के साथ डेटा माइग्रेशन मैं एक कंपनी के लिए एक परियोजना पर काम कर रहा हूं, जहां मुझे अपने पिछले डेटा को एक नई प्रणाली में माइग्रेट करने की आवश्यकता है। स्पष्ट रूप से दोनों संरचनाएं पूरी तरह से अलग हैं और मैं डाटाबेस हेरफेर के लिए हाइबरनेट का उपयोग कर रहा हूं और डेटा माइग्रेट करने का सबसे अच्छा तरीका क्या है, इस बारे में उलझन में हूं। क्या मुझे हाइबरनेट का उपयोग करना चाहिए, क्या मुझे संग्रहित प्रक्रियाएं लिखनी चाहिए, या क्या कोई दूसरा विकल्प है? किसी भी उज्ज्वल विचारों का स्वागत है।हाइबरनेट

+1

उचित प्रश्न देने के लिए इस प्रश्न को अधिक जानकारी की आवश्यकता है। – Nathan

+0

प्रश्न और उत्तर पुराने हैं। सवाल 200 9 में बनाया गया था। और अब यह 2014 है।5 वर्षों से अधिक, हाइबरनेट इतना बदलता है। तो, मैं इस सवाल और उत्तरों को बंद करने का सुझाव देता हूं। – AechoLiu

+0

@AechoLiu यह संस्करणों के लिए एक अनिर्दिष्ट प्रश्न है, इसलिए मैं इसे वर्तमान चश्मे में अपडेट करने का सुझाव दूंगा। –

उत्तर

0

जबकि मुझे "सर्वश्रेष्ठ" के बारे में निश्चित नहीं है, मैं आपकी स्थिति में यदि हाइबरनेट या एक समान ओआरएम का उपयोग करना पसंद करूंगा। इसका कारण यह है कि आपके पास दो डेटाबेस के बीच उपयोग करने के लिए एक ऑब्जेक्ट पदानुक्रम है। यदि स्कीमा बेहद समान हैं, तो बस एक सरल एसक्यूएल स्क्रिप्ट आसान हो सकती है। यह वास्तव में आपकी स्थिति क्या है, और इसकी विशिष्टताओं पर निर्भर करता है।

संपादित करें: मैं वास्तव में कुछ सुबह कैफीन ...

क्या मैं नोट करने के लिए प्रयास कर रहा था, दो लोग हैं जो मेरे बाद पोस्ट द्वारा नोट किया गया था की जरूरत है। यदि स्कीमा परिभाषित किए गए हैं, तो आपके पास पहले से ऑब्जेक्ट्स हैं या रिवर्स इंजीनियरिंग टूल्स के साथ अच्छे हैं, फिर हाइबरनेट जाने का एक आसान तरीका है। हालांकि, अगर यह एक बार बात है, तो स्क्रिप्ट निश्चित रूप से जाने का बेहतर तरीका है।

7

अतीत में दोनों दृष्टिकोणों की कोशिश करने के बाद, मैं निश्चित रूप से कह सकता हूं कि यह एक ऐसा परिदृश्य नहीं है जिसके लिए ओआरएम डिज़ाइन किया गया था, न ही जहां यह बढ़ता है। आप ऑब्जेक्ट्स के दो अलग-अलग सेट बनाने के लिए तैयार होते हैं, और बड़े पैमाने पर माइग्रेशन के लिए आवश्यक दक्षता हासिल करना मुश्किल होता है। हाइबरनेट जैसी चीज़ों का उपयोग करने का एकमात्र कारण यह होगा कि यदि आप एक ऐसी प्रणाली का निर्माण कर रहे थे जो उन्हें एकीकृत करने के लिए दो प्रणालियों के बीच स्थायी रूप से बैठेगा, लेकिन ऐसा लगता है कि यह अपेक्षाकृत अल्पकालिक है।

मैं एक पाइथन लिपि, एसक्यूएल का एक गुच्छा और डेटा को बदलने के लिए कुछ अजगर वस्तुओं के परिणामों से बेहद खुश हूं।

2

हाइबरनेट संग्रहित प्रक्रियाओं के साथ बहुत अच्छी तरह से नहीं खेलता है - यह 'प्राकृतिक फिट' नहीं है। यदि आपका ओआरएम पहले ही मैप हो चुका है, और आपके पास 'as-is' और 'to-be' ऑब्जेक्ट सेटअप है, तो अपने नए लेआउट में डेटा लिखने के लिए सामान्य हाइबरनेट विधियों का उपयोग करें।

यदि आपको स्टोर्डप्रोसेडर मार्ग पर जाने के लिए मजबूर किया जाता है, तो आप यह तय कर सकते हैं कि क्या आप दर्द को निगलना चाहते हैं, और संग्रहीत प्रक्रियाओं में अपने परिवर्तनों को कोड करें - इस तरह आपकी सभी माइग्रेशन स्क्रिप्ट एक साथ रहेंगी।

अन्य पोस्टर की तरह, पाइथन जैसी एक पटकथा भाषा आपको अच्छी तरह से सेवा दे सकती है - उसने मेरे लिए भी अच्छा काम किया है।

0

व्यक्तिगत रूप से मैं शायद एसएसआईएस (यदि आप या SQL सर्वर से जा रहे हैं) जैसे एटीएल उपकरण का उपयोग करेंगे, तो बड़ी मात्रा में डेटा का आंदोलन ईटीएल टूल्स डिज़ाइन और अनुकूलित करने के लिए अनुकूलित किया जाता है।

2

मैंने डेटा माइग्रेशन को प्रबंधित करने का प्रयास किया है क्योंकि मैं विभिन्न कोडों के माध्यम से अपना कोड और मेरा डेटा प्रतिनिधित्व बदलता हूं। हर बार, मैंने पुराने राज्य में वस्तुओं के लिए पूछताछ करने के लिए विशिष्ट एसक्यूएल लिखना समाप्त कर दिया है, और नए कॉलम को पॉप्युलेट करने के लिए। यदि ऑब्जेक्ट के रूप में सबकुछ देखते समय डेटा माइग्रेशन को प्रबंधित करने का एक सीधा तरीका है, तो मैंने इसके बारे में सोचा नहीं है, और अब तक, नए कॉलम में हमेशा सरल व्याख्याएं होती हैं जिन्हें मैं एसक्यूएल में गणना कर सकता हूं।

उनमें से कुछ काफी सरल हैं कि कोड जावा में समाप्त हो गया है, और अन्य परिवर्तन इतने जटिल हैं कि मैं एकाधिक एसक्यूएल स्टेटमेंट चाहता था, और इसलिए मैंने उन्हें खोल और पायथन (दोनों पोर्टेबिलिटी के लिए) में एम्बेड किया) स्क्रिप्ट्स। स्क्रिप्ट here और the java code हैं जैसे अद्यतन डीबी 2008008() जैसी विधि नामों के साथ।