2011-06-07 9 views
7

हमारे प्रोजेक्ट में लगभग 20 डेवलपर हैं, लेकिन हमारा एप्लिकेशन डाटाबेस का अपेक्षाकृत हल्का उपयोग करता है। हमारे पास लगभग 5 डेटाबेस का संग्रह है, जिनमें से सभी बहुत छोटे हैं और उनमें से 20 से कम टेबल होंगे, जिनमें से कोई भी लाखों पंक्तियां या कुछ भी बड़ा नहीं है।प्रबंध डीबी माइग्रेशन: स्क्रिप्ट बनाम उपकरण

  • उपकरण के कुछ प्रकार:

    हम समय के साथ डेटाबेस के विकास का प्रबंधन करने के लिए मेज पर दो विकल्प हैं। वर्तमान में हम विजुअल स्टूडियो डेटाबेस प्रोजेक्ट्स का उपयोग कर रहे हैं, जिसमें स्कीमा की वर्तमान परिभाषा है, और एक diff स्क्रिप्ट उत्पन्न करने के लिए संदर्भ डेटाबेस देखें। फिर हम संदर्भ डेटाबेस को अद्यतित करने के लिए इस diff स्क्रिप्ट का उपयोग करते हैं।

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

दूसरा विकल्प व्यापक रूप से इस्तेमाल किया जा रहा है और मैं एक गहराई से चर्चा यहाँ पाया है: http://odetocode.com/blogs/scott/archive/2008/01/31/versioning-databases-the-baseline.aspx

समस्या है कि हम क्या हम इस समय मिल गया है के साथ है

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

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

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

उत्तर

3

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

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

3

मैं एसक्यूएल तुलना के लिए रेड गेट में उत्पाद प्रबंधक हूं, जो दो डेटाबेस के बीच diff स्क्रिप्ट उत्पन्न करता है। मैं चाहता हूं कि आप हमारे एसक्यूएल सोर्स कंट्रोल टूल पर नज़र डालें, जो आपको विकास में किए जाने पर स्कीमा परिवर्तनों को ट्रैक करने की अनुमति देगा। जब तैनाती की बात आती है, यदि आपको पता है कि कौन सा स्कीमा संस्करण उत्पादन में है, तो आप अपने स्रोत नियंत्रित संस्करणों से एक तैनाती स्क्रिप्ट उत्पन्न कर सकते हैं। बेशक आपको उत्पादन पर चलने से पहले हमेशा एक मंचन वातावरण में इसका परीक्षण करना चाहिए।

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

+0

एक अन्य विशेषता यह है कि भयानक होगा संस्करणों के बीच स्थिर डेटा का प्रबंधन करने के लिए एक रास्ता है करने के लिए किया जाएगा। क्या यह रेड गेट ऑफर या पेशकश करने की योजना है? – joerage

+0

क्या यह उचित माइग्रेशन स्क्रिप्ट में अपने स्थिर डेटा को एसक्यूएल बदलने का सवाल नहीं होगा? –

+0

मुझे तब गलत समझा जाना चाहिए। हालांकि, माइग्रेशन स्क्रिप्ट स्वचालित रूप से डेटाबेस स्कीमा के संस्करण इतिहास के आधार पर उत्पादित की गई थीं। यदि ऐसा होता, तो अगला चरण स्थिर डेटा का प्रबंधन करना होगा और इसे माइग्रेशन स्क्रिप्ट में शामिल करना होगा। – joerage

0

माइग्रेट करते समय आपको डेटाबेस, डेटाबेस ऑब्जेक्ट्स, डेटाबेस अनुमतियां, सर्वर लॉग इन, सर्वर अनुमतियां, एसक्यूएल जॉब्स, एसक्यूएल मेल प्रोफाइल, लिंक किए गए सर्वर स्क्रिप्ट करने की आवश्यकता है। नीचे पावर खोल स्क्रिप्ट आपको इसे प्राप्त करने में मदद करेगी। पावर खोल स्क्रिप्ट चलाने से पहले निर्देशों को ध्यान से पढ़ें।

https://gallery.technet.microsoft.com/SCRIPTING-DB-DB-OBJECTS-DB-81bba072

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