लिक्विबेस क्यों और कब?


98

मैंने इस सवाल को स्टैक ओवरफ्लो पर खोजने की कोशिश की है, लेकिन इसके लिए कोई सवाल नहीं खोज सका।
मैं नया हूं Liquibaseऔर जानना चाहता हूं

  • क्यों Liquibase?
  • जब एक Liquibaseपरियोजना में उपयोग करना चाहिए ?

मुझे पता है कि यह सभी डेटाबेस परिवर्तनों को एक स्थान पर रखना है लेकिन SQLकुछ रिपॉजिटरी सिस्टम में एक साधारण फाइल बनाकर इसी तरह किया जा सकता है और इसे समय के साथ अपडेट करते रहना चाहिए।

जवाबों:


69

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

अन्य लाभ हैं, जैसे:

  • डेटाबेस विक्रेता स्वतंत्रता (यह संदिग्ध है, लेकिन वे कोशिश करते हैं)
  • स्वचालित प्रलेखन
  • डेटाबेस स्कीमा अलग है

एक वैकल्पिक उपकरण फ्लाईवे है

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


1
लेकिन मान लेते हैं कि हम एक फाइल बनाते हैं और उसमें अपनी पहली स्क्रिप्ट लिखते हैं और यह कहते हैं कि चलो इसे git कहें। अब, समय के साथ, स्कीमा को अद्यतन किया जाएगा और हम समय के किसी भी अंतराल पर वापस जा सकते हैं और स्कीमा को भी वापस बदल सकते हैं, नहीं?
शकील शहजाद

1
उस दृष्टिकोण से आप स्कीमा को फिर से बना सकते हैं , लेकिन आप डाउनग्रेड / अपग्रेड नहीं कर सकते। अंतर डेटा की हानि है।
सायेंसो

1
लेकिन दूसरा हिस्सा, कब उपयोग करना है?
शकील शहजाद

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

एक और सवाल यह है कि ... हम जावा में ईमेल के माध्यम से त्रुटि कैसे दर्ज कर सकते हैं। जब XML के माध्यम से SQL परिवर्तन बदलता है?
उमाशंकर

18

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

स्कीमा बनाए रखने के लिए एक बहुत ही "संस्करण" दृष्टिकोण।

शुरुआत के लिए, यह "अनावश्यक काम" की छाप देता है।


4
मैं कौन हूँ (यह मुझे सटीक आभास देता है जिसका आपने उल्लेख किया है: P) उस महत्वपूर्ण निश्चय के लिए +1
इस्माइल साहिन

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

7

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


3

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

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


19
चश्मा बदल जाता है, नई सुविधाएँ जुड़ जाती हैं, कीड़े ठीक हो जाते हैं। यहां तक ​​कि यह मानते हुए कि "एक डेटाबेस ACCURATELY के लिए डिज़ाइन किया गया है जो व्यावसायिक संबंधों को प्रतिबिंबित करता है", यह सामान्य है और उम्मीद है कि आपको समय के साथ DB में परिवर्तन करने की आवश्यकता होगी, क्योंकि समय के साथ व्यवसाय और व्यावसायिक संबंध बदलते हैं। लिकिबेस आपको उन परिवर्तनों को प्रबंधित करने में मदद करता है। बस।
स्टीवन बक्स

मेरे अनुभव में बहुत कम डीबीए और डेवलपर्स के एक पूरे मेजबान लिक्विबेस का उपयोग करते हैं - मुझे लगता है कि @ बॉब-बैरी अंतिम परिणामों के बहुमत के साथ हाजिर है। DBAs जो लिक्विबेस (या बदलावों के इतिहास के लिए सिर्फ सादे पुराने गिट) जैसे उपकरणों का उपयोग करते हैं, हालांकि यह उपयोगी साबित होंगे।
फिलिपहोलम्स

विकासवादी DB प्रथाओं, और सामान्य रूप से चुस्त, प्रोत्साहित करते हैं और सहकर्मी की समीक्षा को सक्षम करते हैं। प्रदर्शन आवश्यकताओं के साथ एक DB के लिए, DBA अभी भी DB परिवर्तनों के लिए ऐप टीमों के साथ काम करते हैं। लिक्विबेस जैसे उपकरण आपके पुनर्मूल्यांकन तर्क के खिलाफ जाकर आसान रीफैक्टरिंग को सक्षम करते हैं। 10 साल पहले, मैंने 20+ क्लाइंट्स में स्थापित उत्पाद के लिए काम किया था, प्रत्येक अपने स्वयं के पैच और अपग्रेड साइकिल के साथ। 2 साल के दुःस्वप्न के बाद, और हाथ से इस तरह के उपकरण को लिखने की कोशिश करते हुए, जैसे ही हमने इसके बारे में सीखा, हम शराबबंदी पर कूद पड़े। और हमारे पास 200 एम रिकॉर्ड्स के साथ टेबल थे, उस समय के लिए बहुत बड़ा नहीं था, लेकिन डीबीए की जरूरत थी।
user6317694

3
मुझे उम्मीद है कि आप किसी दिन स्वर्ग में मिलेंगे। ज़रूर अच्छा लगता है।
बिजन

3

मुझे लगता है कि अगर आप नीचे दिए गए लेख http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.html पर जाते हैं, तो शराबबंदी का जवाब क्यों दिया जा सकता है

यदि आप इसे ध्यान से पढ़ते हैं तो सरल mvn या CLI कमांड की मदद से उच्च संस्करण से निचले संस्करण में डाउनग्रेड करने की क्षमता बहुत उपयोगी है, जो आपको GIT में अपनी sql फाइल करने के दृष्टिकोण से गुजरने पर नहीं मिलती है क्योंकि तब आप मैन्युअल रूप से उन लिपियों को चलाना होगा और आपके पास परिवर्तन सेट भी नहीं होना चाहिए: - जिन्होंने लेखक को बदल दिया, आदि।


0

मेरी टीम के DevOps व्यक्ति होने के नाते मैं अपनी सभी SQL फ़ाइलें एक स्थान पर अर्थात मेरे SCM (स्रोत कोड प्रबंधन) में रखना पसंद करूंगा

इसके अलावा CI / CD चरण के दौरान , यदि DB स्कीमा इसके साथ बनाई जाती है, तो यह बहुत समय और संसाधन बचाता है। आपको उस क्लाइंट के लिए अपने डेटाबेस को प्रबंधित करने वाला कोई दूसरा व्यक्ति नहीं होना चाहिए।

ORM जैसे फ्लाईवे, लिक्विबेस, EF आदि इसे प्राप्त करने में मदद करता है।

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