2012-04-10 19 views
5

क्या विकल्प डेटाबेस स्क्रिप्ट प्रबंधित डेटाबेस के लिए एक नया विकास करने के लिए मौजूद है:डाटाबेस निर्माण प्रक्रिया प्रबंधन

उदाहरण के लिए, डेटाबेस अनुप्रयोगों के एक नंबर के द्वारा प्रयोग किया और वहाँ डेवलपर्स के एक नंबर डेटाबेस के साथ काम कर रहे हैं, क्या होगा

  1. माइक्रोसॉफ्ट विजुअल स्टूडियो एक डेटाबेस परियोजना है, तो सब: ​​सबसे अच्छा विकल्प पिछले परिवर्तनों से अद्यतन डेटाबेस को बनाए रखने के लिए और क्या उत्पादन

    को तैनाती परिवर्तन की प्रक्रिया होना चाहिए मैं दो विकल्पों को देखने के लिए किया डेटाबेस स्क्रिप्ट परियोजना में जोड़ने की जानी चाहिए और डेटाबेस दृश्य स्टूडियो

  2. से पुनर्निर्माण किया जा सकता है बैकअप से डेटाबेस पुनर्स्थापित करें और डेटाबेस

क्या एक और विकल्प मौजूद है केवल नए स्क्रिप्ट लागू होते हैं? मैं डेटाबेस विकास कैसे प्रबंधित कर सकता हूं, सर्वोत्तम प्रथाओं क्या है? ऊपर लिखने वाले विकल्पों के फायदे और नुकसान क्या होंगे? नई एसक्यूएल स्क्रिप्ट को कैसे बनाए रखें?

मुझे समझ में आता है कि स्रोत नियंत्रण प्रणाली का उपयोग किया जाना चाहिए, लेकिन डीबी स्क्रिप्ट के साथ यह एप्लिकेशन के साथ इतना आसान नहीं है।

मेरा मानना ​​है कि यह कोई सार्वभौमिक समाधान नहीं होगा, लेकिन कम से कम मैं डीबी डेवलपर्स की राय में दिलचस्प हूं कि यह आपकी कंपनी में कैसे लागू किया गया है।

उत्तर

3

Liquibase आईएमएचओ सबसे अच्छा उपकरण है। यह अपने दृष्टिकोण में क्रूरता से सरल है, जो कि यह बहुत अच्छा काम करने के कारणों में से एक है।

आप साइट पर पढ़ सकते हैं कि यह कैसे काम करता है, लेकिन मूल रूप से यह एक साधारण तालिका बनाता है और प्रबंधित करता है जो यह निर्धारित करने के लिए प्रत्येक स्क्रिप्ट का हैश स्टोर करता है कि यह अभी तक एक स्क्रिप्ट चला रहा है या नहीं। प्री- और पोस्ट-एसक्यूएल भी है, और आप शर्तों को बाईपास कर सकते हैं ... यह बहुत कुछ है जो आप चाहते हैं या जरूरत है। इसमें मेवेन एकीकरण भी है, इसलिए यह निर्बाध रूप से आपके निर्माण का हिस्सा बन सकता है।

मैंने इसे बड़े (8 डेवलपर्स) प्रोजेक्ट पर बहुत सफलतापूर्वक उपयोग किया और अब मैं किसी और चीज का उपयोग नहीं करूंगा।

और यह मुफ़्त है!

+0

दिलचस्प लग रहा है, इसे एक उत्तर के रूप में चिह्नित ... उपकरण का प्रयास करेगा –

3

वर्तमान में हम एसवीएन का उपयोग करते हैं और एक "अपग्रेड" फ़ोल्डर है जहां सभी डेवलपर अपनी स्क्रिप्ट को प्रतिबद्ध करते हैं।

प्रत्येक स्क्रिप्ट में upg_yyyymmddhhmmss_ScriptName.sql प्रारूप में जेनरेट किया गया उपसर्ग है - इसलिए जब उन्हें तैनात किया जाता है तो वे पूर्व-निर्धारित क्रम में चलाते हैं; डेटाबेस को सुसंगत रखते हुए।

यह नीचे एसक्यूएल के माध्यम से उत्पन्न और एक पूर्व के माध्यम से लागू करने की है हुक:

select 'upg_' + convert(varchar, SYSUTCDATETIME(), 112) 
    + replace(convert(varchar, SYSUTCDATETIME(), 8), ':', '') 
    + '-' 
    + 'MeaningfulScriptName' 

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

यदि आप कुछ और औपचारिक खोज रहे हैं, तो रेड गेट की उपयोगिता SQL Source Control है।

या आप Data Tier Application framework का उपयोग कर देख सकते हैं।

+1

आपने अभी पहिया को फिर से शुरू किया है ... लिक्विबेस देखें - यह आपके लिए "अद्वितीय स्क्रिप्ट" बकवास और बहुत कुछ करता है। यह पूरी तरह से भयानक है। – Bohemian

+0

मैं इसे देख लूंगा; चीयर्स –

1

हम डेटाबेस नियंत्रण संस्करण के लिए DBGhost का उपयोग करते हैं। वर्तमान डेटाबेस बनाने के लिए स्क्रिप्ट TFS (स्रोत कोड के साथ) में संग्रहीत हैं और फिर डीबीजीहोस्ट का उपयोग मौजूदा संस्करण में वातावरण को अपग्रेड करने के लिए डेल्टा स्क्रिप्ट उत्पन्न करने के लिए किया जाता है। डीबीगोस्ट किसी भी स्थिर/संदर्भ/कोड डेटा के लिए डेल्टा स्क्रिप्ट भी बना सकता है।

इसे पारंपरिक विधि से दिमागी बदलाव की आवश्यकता है लेकिन यह एक शानदार समाधान है जिसे मैं पर्याप्त अनुशंसा नहीं कर सकता। हालांकि यह एक तृतीय पक्ष उत्पाद है, यह हमारे स्वचालित निर्माण और तैनाती प्रक्रिया में सहजता से फिट बैठता है।

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