आप SQL टेबल में परिवर्तन / ट्रैक कैसे करते हैं?


16

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

जवाबों:


4

मैं एक कोड-आधारित डेटाबेस माइग्रेशन टूल का उपयोग करता हूं और माइग्रेशन कोड को सोर्स कंट्रोल में रखता हूं ।

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

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


4

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

ग्राहक साइट पर डेटाबेस को संस्करण करने के लिए उसी तकनीक का उपयोग किया जा सकता है, जब फ़ील्ड या तालिकाओं को जोड़ने या निकालने की आवश्यकता होती है, या डेटा परिवर्तनों को जगह लेने की आवश्यकता होती है।


3

संस्करण नियंत्रण के तहत स्क्रिप्ट बनाएँ और उन्हें सत्यापित करने के लिए निरंतर एकीकरण

एक दृष्टिकोण जो मेरे लिए काम करता था, प्रत्येक डेवलपर को अपने स्वयं के स्कीमा के साथ काम करना था जो वे कर सकते हैं जो वे पसंद करते हैं। उनका स्कीमा विनाशकारी था और स्क्रिप्ट के नियंत्रित संस्करण से लिए गए परीक्षण डेटा के साथ आबाद था, जो सभी डेवलपर्स ने योगदान दिया था।

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

इस सड़क को शुरू करने से पहले, जगह में एक बहुत ही ठोस डेटाबेस डिजाइन था और डीबीए हमेशा डेवलपर्स पर ध्यान देने से रोकने के लिए चीजों पर नजर रख रहा था।

संस्करण नियंत्रण ने यहां बहुत मदद की क्योंकि लिपियों में परिवर्तन तुरंत स्पष्ट थे। हमने डेटाबेस VERSIONकी समग्र स्थिति की पहचान करने के लिए एक डेटाबेस तालिका का उपयोग भी किया । यह एक सरल पूर्णांक अनुक्रम था और किसी विशेष अनुप्रयोग से जुड़ा नहीं था।

कुल मिलाकर, यह अच्छी तरह से काम करता है और इसका मतलब है कि डेवलपर्स दृढ़ता के स्तरों को बदलने से डरते हैं क्योंकि वे हमेशा दूसरों को प्रभावित किए बिना अपने स्वयं के स्कीमा को वापस ले सकते हैं।


2

यदि आप एक MS दुकान में हैं, तो Visual Studio 2010 में कुछ अच्छे डेटाबेस संस्करण नियंत्रण उपकरण हैं, जो दो डेटाबेस के बीच अंतर के आधार पर परिवर्तन / परिनियोजन स्क्रिप्ट भी उत्पन्न कर सकते हैं।


2

संस्करण नियंत्रण के तहत स्कीमाटा और अन्य एसक्यूएल लिपियों को रखने के साथ, वास्तविक डीबी में एक 'स्कीमा संस्करण' तालिका बनाए रखने के लिए एक और आसान अभ्यास है ।

create table schema_migrations (
    `appliedAt` timestamp not null default CURRENT_TIMESTAMP,
    `migrationCode` varchar(256) not null,
    `extraNotes` varchar(256),
    primary key (`migrationCode`)
)

2

सिद्धांत में एक भयानक प्रवासन उपकरण है: http://www.doctrine-project.org/documentation/manual/1_2/en/migrations , सबसे अच्छी बात यह है कि वे ऑटोजेनरेटेड हैं या आसानी से हाथ से कोडित किए जा सकते हैं।


मुझे एहसास भी नहीं था कि वे प्रदान करते हैं ... साफ।
गाबे

1

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

एसक्यूएल स्क्रिप्ट नए टेबल बनाएगी, कॉलम में बदलाव करेगी, और पहले से संस्करण से स्क्रिप्ट को बढ़ावा देने के लिए डेटाबेस पर जो भी काम करना है। आदर्श रूप में मेरे पास एक रोलबैक स्क्रिप्ट भी होगी, लेकिन अधिकांश समय मैं नहीं।

BTW, इस पूरे दृष्टिकोण को रोलबैक स्क्रिप्ट के साथ रूबी ऑन रेल्स के हिस्से के रूप में स्वचालित किया गया है। मुझे इसका विचार पसंद है, लेकिन सभी चौखटे ऐसा नहीं करते हैं। जब मैं रूबी ऑन रेल्स का उपयोग नहीं कर रहा हूं, तो मैं ऊपर उल्लिखित दृष्टिकोण का उपयोग करता हूं।

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