समूह ट्रैक डेटाबेस स्कीमा कैसे बदल सकता है?


67

क्या संस्करण नियंत्रण के तरीके लोगों को डेटाबेस स्कीमा परिवर्तन को ट्रैक करने में मदद करते हैं?


आप यहां क्या हासिल करने की कोशिश कर रहे हैं? क्या आप लोगों को बदलने या ऑडिट ट्रेल बनाने के लिए लोगों को सचेत करने की कोशिश कर रहे हैं कि किसने और कब बदला? पूरी तरह से कुछ और?
स्कॉटकर

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

1
यह सवाल है जो मैंने अभी पोस्ट किया है, लेकिन मुझे लगता है कि वे दोनों dba.stackexchange.com/questions/64/…
बेथ व्हाइटजेल

1
@BitOff - मैं सहमत हूं और मुझे लगता है कि आपके द्वारा संदर्भित प्रश्न का उत्तर यहां भी है। PowerDesigner या ERWin जैसे टूल का उपयोग करना डेटाबेस डिज़ाइन को नियंत्रित करने में संस्करण की मदद कर सकता है - यदि डेटाबेस को बाहरी रूप से मॉडल किया गया है, और मॉडल के माध्यम से सभी परिवर्तनों की योजना बनाई गई है, तो आप समीक्षा के लिए उन परिवर्तनों को बेहतर ढंग से नियंत्रित और प्रसारित कर सकते हैं।
१२ पर स्कॉटकर

1
लिक्विबेस या फ्लाईवे
a_horse_with_no_name

जवाबों:


44

बस कुछ मिनट पहले मैं यह जाँच कर रहा था: एक तालिका जो एक डेटाबेस के साथ सभी परियोजनाओं में मौजूद होनी चाहिए , व्यवहार में लाना सरल लगता है, इसे देखें:

इसे स्कीमा_वर्सन (या माइग्रेशन, या जो भी आपको सूट करता है) कहा जाता है और इसका उद्देश्य डेटाबेस में संरचनात्मक या डेटा परिवर्तनों का ट्रैक रखना है। एक संभावित संरचना (MySQL में उदाहरण) है:

create table schema_version (
     `when` timestamp not null default CURRENT_TIMESTAMP,
     `key` varchar(256) not null,
     `extra` varchar(256),
     primary key (`key`)
) ENGINE=InnoDB;

स्कीमा_वर्सन ( key, extra) मान ('001', 'स्कीमा संस्करण') में डालें ;

चाहे आप इस तालिका को प्रोजेक्ट की शुरुआत से जोड़ लें या आपके द्वारा स्टेजिंग या प्रोडक्शन सर्वर पर पहला संस्करण तैनात करने के बाद ही आप पर निर्भर है।

जब भी आपको डेटाबेस संरचना को बदलने या डेटा माइग्रेशन करने के लिए किसी SQL स्क्रिप्ट को निष्पादित करने की आवश्यकता होती है तो आपको उस तालिका में एक पंक्ति जोड़नी चाहिए। और उस स्क्रिप्ट के भीख या अंत में एक सम्मिलित विवरण के माध्यम से ऐसा करें (जो परियोजना के कोड भंडार के लिए प्रतिबद्ध है)।

...


1
@ डेविड - यह लगभग अपने आप में एक सवाल है, लेकिन क्या आप बहुत जल्दी बता सकते हैं कि टेबल आपके वीसीएस पर कैसे प्रतिक्रिया दे सकती है? बस एक मैनुअल डंप के साथ?
तोबी

@ टॉबी - एक तैनाती के साथ, स्क्रिप्ट एसवीएन में डाल दी गई थी और डेवलपर ने एसवीएन रिवाइव या जीआईआरए बग # प्रदान किया था - हम (डीबीएएस) ने अपने त्वरित नोट डाले और # इस तालिका में # संशोधन किया। इसे एक साथ जोड़ने के लिए, हालांकि, हमने इस तालिका को JIRA के लिए हाइपरलिंक के साथ इंगित करने के लिए एक वेब पेज बनाया।
डेविड हॉल

हाँ। मूल रूप से ओपी में यह पीछे की ओर होता है - आप परिनियोजन स्क्रिप्ट का उपयोग करते हैं जो आप संस्करण करते हैं, आप डेटाबेस डेल्टास से काम नहीं करते हैं। वे वैसे भी केवल पतित (सरलीकृत) मामलों में काम करते हैं - स्कीमा को अपडेट करने के लिए आपको मल्टी स्टेप ट्रांसफॉर्म करने पड़ सकते हैं, जो एक टूल पिछड़े उत्पन्न नहीं कर सकता है। लेकिन तैनाती स्क्रिप्ट इसे संभाल सकती है।
टॉमटॉम

23

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

ऐसा करने में, RedGate के पास SSMS और SQL की तुलना में स्रोत नियंत्रण को एकीकृत करने के लिए एक उपकरण है जो MS SQL स्कीमा की तुलना / सिंक्रनाइज़ेशन के लिए उपयोगी है। Visual Studio डेटाबेस संस्करण में एक अंतर्निहित स्कीमा तुलना उपकरण भी है

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


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

12

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


8

मुझे लगता है कि इस सवाल का जवाब देने के लिए कुछ अलग-अलग कोण हैं। मेरा मानना ​​है कि "टूल-फर्स्ट" कोण, प्लेटफॉर्म और व्यक्तिगत पसंद के आधार पर अलग-अलग है। बिंदु में मामला: मैं एमएस विज़ुअल स्टूडियो में एक डेटाबेस प्रोजेक्ट का उपयोग कर रहा हूं, लेकिन मुझे यकीन नहीं है कि यह MySQL के लिए एक महान समाधान है। मैं ऐसे लोगों को भी जानता हूं जो रेडगेट, इरविन, एम्बरकैडेरो, आदि से अपने पसंदीदा टूल पर बहुत अधिक बिकते हैं।

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

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

अंत में, यह स्टैकओवरफ़्लो से "विरासत जवाब" में जोड़ने के लायक है ।


5

SchemaCrawler डेटाबेस स्कीमा ऑब्जेक्ट के सभी के साथ एक टेक्स्ट फ़ाइल बनाने के लिए मेरा टूल है। मैंने इस पाठ आउटपुट को मानव-पठनीय, साथ ही साथ अन्य सर्वर से समान आउटपुट के विरुद्ध भिन्न-सक्षम होने के लिए डिज़ाइन किया है।

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


Oracle के लिए code.google.com/p/oracle-ddl2svn
popalka
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.