मुझे लगता है कि सभी डेवलपर्स एक तरह से या किसी अन्य "माइग्रेशन स्क्रिप्ट" की अवधारणा को जानते हैं। एक नियम के रूप में, इसका मतलब डेटाबेस की प्रासंगिकता बनाए रखने के लिए बनाई गई एक sql स्क्रिप्ट है। माइग्रेशन स्क्रिप्ट बनाने और उपयोग करने का तरीका बहुत आसान है, इसलिए, इस प्रक्रिया को मैन्युअल रूप से भी किया जा सकता है। मैं एक उपकरण के बारे में बात करना चाहता हूं जो कुछ स्थानों पर माइग्रेशन स्क्रिप्ट के साथ काम करने को सरल बनाता है।
MyBatis स्कीमा माइग्रेशन
एक दिलचस्प MyBatis भंडारण पुस्तकालय (पहले iBatis के रूप में जाना जाता है) में एक माइग्रेशन स्क्रिप्ट प्रबंधन उपकरण शामिल है। यह कमांड लाइन से काम करता है और लिनक्स और विंडोज सिस्टम दोनों के लिए लागू किया जाता है। कंसोल स्क्रिप्ट (बैट, श) जिसके साथ हम काम करेंगे, बस हमारे कमांड्स को संबंधित जावा क्लास में पास करता है और जावा मशीन पर निष्पादित करता है।
एक पुस्तकालय क्या कर सकता है:
- लिस्टिंग माइग्रेशन लिपियों
- एक विशिष्ट माइग्रेशन स्क्रिप्ट की स्थिति का निर्धारण (पहले से ही लुढ़का या नहीं)
- माइग्रेशन स्क्रिप्ट निष्पादन दिनांक प्रदर्शन
- माइग्रेशन स्क्रिप्ट टेम्पलेट बनाना
- रनिंग माइग्रेशन लिपियों
- रोल बैक परिवर्तन
- डेटाबेस संस्करणों के बीच मनमाना आंदोलन
- एक अलग फ़ाइल में माइग्रेशन स्क्रिप्ट निर्यात करें। इस स्थिति में, आप यह निर्दिष्ट कर सकते हैं कि माइग्रेशन स्क्रिप्ट के किस संस्करण से यह निर्यात करने योग्य है।
जब आप पहली बार
MyBatis स्कीमा माइग्रेशन शुरू
करते हैं, तो वह ध्यान से माइग्रेशन स्क्रिप्ट प्रोजेक्ट संरचना बना सकता है जिसे वह समझता है।
उपयोगिता के साथ काम करने की प्रक्रिया इस तरह दिखती है (सभी कमांड उपकरण को मॉडल के प्रारूप में ही लॉन्च करने के संदर्भ में निष्पादित किए जाते हैं << कमांड >>):
- Init कमांड के साथ माइग्रेशन स्क्रिप्ट रिपॉजिटरी को आरम्भ करें
- नई कमांड के साथ स्क्रिप्ट नाम निर्दिष्ट करके एक माइग्रेशन स्क्रिप्ट बनाएं
- निर्मित स्क्रिप्ट ठूंठ में दो ब्लॉक हैं। हम उन्हें भरते हैं:
- माइग्रेशन स्क्रिप्ट ही
- स्क्रिप्ट रोलबैक वर्तमान माइग्रेशन को बदल देता है
- अप कमांड के साथ माइग्रेशन स्क्रिप्ट चलाएँ
- हम स्थिति कमांड के साथ स्क्रिप्ट की स्थिति को देखते हैं
- यदि स्क्रिप्ट्स हैं (उदाहरण के लिए, वे संस्करण नियंत्रण प्रणाली के माध्यम से प्रोजेक्ट को अपडेट करने के बाद दिखाई दिए), तो उन्हें अप कमांड के साथ चलाएं
- यदि आपको डेटाबेस की किसी विशिष्ट स्थिति में वापस जाने की आवश्यकता है, तो हम नीचे या संस्करण कमांड के साथ परिवर्तनों को वापस रोल करते हैं
- हम अपने माइग्रेशन स्क्रिप्ट का एक गुच्छा एक अलग फ़ाइल में निर्यात करते हैं, उदाहरण के लिए, ग्राहक को कमांड स्क्रिप्ट देने के लिए विचलन से आगे बढ़ना, जहाँ से विवर्जन और विवर्ण निर्यात डेटा की सीमा निर्धारित करते हैं
- सूची के मध्य में अपूर्ण स्क्रिप्ट के मामले में, आप केवल लंबित कमांड का उपयोग करके उन्हें चला सकते हैं। आदेश खतरनाक है क्योंकि अन्य स्क्रिप्ट परिवर्तित स्क्रिप्ट पर निर्भर हो सकती हैं।
प्रोजेक्ट डेटाबेस की स्थिति की निगरानी करना कितना सरल है।
लेकिन सूक्ष्मता के बिना नहीं। तो, लिनक्स से, इस उपयोगिता ने डिफ़ॉल्ट माइग्रेशन स्क्रिप्ट टेम्पलेट खोजने से इनकार कर दिया। मुझे कॉन्फ़िगरेशन फ़ाइल (माइग्रेशन.प्रोफ़र्टीज़) में अपनी टेम्पलेट फ़ाइल में पथ को पंजीकृत करना था:
new_command.template=20110925094101_first_migration.sql
आपको उपयोगिता कमांड को निष्पादित करने की आवश्यकता है जबकि माइग्रेशन स्क्रिप्ट प्रोजेक्ट जो हमने init कमांड के साथ बनाया है। आप इसे कहीं भी पा सकते हैं, लेकिन प्रत्येक कमांड को -path पैरामीटर असाइन करें।
आप आधिकारिक ट्यूटोरियल से और आधिकारिक वीडियो से
MyBatis स्कीमा माइग्रेशन के साथ काम करने के बारे में अधिक जान सकते हैं, जो टूल के साथ काम करने का एक उदाहरण दिखाता है।
MyBatis स्कीमा माइग्रेशन विस्तारित (माइग्रो)
यद्यपि उपयोगिता मुझे दिलचस्प लगी और यह कुछ समस्याओं को हल करती है, वर्तमान कार्यान्वयन में मुझे इस उपकरण के कार्यान्वयन के साथ दिखाई देने वाले नुकसान भी दिखाई देंगे। परियोजना को जावा में लिखा गया है और
अपाचे लाइसेंस 2 के तहत वितरित किया गया है, जिसने मुझे इस परियोजना का अपना कांटा बनाने के लिए प्रेरित किया, जहां मैं आवश्यक सुविधाओं को लागू कर सकता था। मैं तुरंत कहूंगा कि मैं myBatis माइग्रेशन टूल प्रोजेक्ट को काफी पूर्ण मानता हूं और मैं माइग्रेशन स्क्रिप्ट्स को बनाए रखने के बारे में इसके डेवलपर्स की दृष्टि को समझता हूं। लेकिन इस विषय पर मेरी अपनी दृष्टि है और मेरा मानना है कि यह उपकरण बड़ी परियोजनाओं पर उपयोग के लिए बिल्कुल उपयुक्त नहीं है।
एक बड़े प्रोजेक्ट के लिए आपको क्या चाहिए
मेरी परियोजना में पहले से ही क्या लागू किया गया है:
- लिपियों को बिल्ड संस्करण द्वारा समूहीकृत किया जा सकता है, जो संपूर्ण प्रोजेक्ट के लिए एक फ़ोल्डर में माइग्रेशन स्क्रिप्ट की एक लंबी स्ट्रिंग को संग्रहीत करने की आवश्यकता को समाप्त करता है।
- आप इसके लिए संपादित कमांड को कॉल करके पहले से निर्मित और रन माइग्रेशन स्क्रिप्ट को संपादित कर सकते हैं।
- संशोधित फ़ाइलों को अद्यतन के रूप में सूचीबद्ध किया गया है। आप लंबित कमांड का उपयोग करके उन्हें अपडेट कर सकते हैं। संशोधन के बावजूद, लंबित आदेश अभी भी असुरक्षित है।
क्या लागू होगा:
- कमांड लाइन द्वारा समूह बनाना बिल्ड संस्करण
- किसी विशिष्ट माइग्रेशन स्क्रिप्ट या मनमानी श्रेणी का निष्पादन
- निर्यात स्क्रिप्ट, विशिष्ट बिल्ड संस्करण
- टेम्पलेट फ़ाइल में स्क्रिप्ट निर्यात करें
- आईडीई एकीकरण
- अनुकूलन और रीफैक्टरिंग :)
आप यहां डाउनलोड कर सकते हैं:
https://github.com/evgenij-kozhevnikov/Migroस्रोत परियोजना:
myBatisवीडियो:
MyBatis स्कीम माइग्रेशन उदाहरण