2008-09-25 39 views
81

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

उत्तर

7

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

मुझे नहीं लगता कि आप रेल माइग्रेशन का उपयोग क्यों नहीं कर सकते थे - जब तक आपको स्टैक (रूबी, रेक, रेल) ​​इंस्टॉल करने में कोई फर्क नहीं पड़ता, आपको अपने ऐप को छूना नहीं होगा।

+18

यह 100% सिंक नहीं करता है। यह स्तंभों को परिवर्तित नहीं करता है, कॉलम या टेबल हटाता है, एफके इत्यादि को हटाता है – cherouvim

10

Grails में dbmigrate उपयोगिता है जो रेल से एक के बाद पैटर्न की जाती है। चूंकि इसे ग्रोवी में लागू किया गया है, इसलिए आप इसे अपनी किसी भी जावा प्रोजेक्ट से उपयोग करने में सक्षम होना चाहिए।

7

वहाँ भी जावा के लिए रेल की तरह माइग्रेशन के दो स्वतंत्र कार्यान्वयन हैं:

Hashrocket (मेरी निजी पसंदीदा से Carbon Five

2) चींटी आधारित कार्यों से

1) Maven आधारित माइग्रेशन)

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

+2

हैशरॉकेट 2007 से छुआ नहीं गया है। कार्बन फाइव का सी 5-डीबी-माइग्रेशन उत्पाद 2010 से अपडेट नहीं किया गया है। – Green

12

Liquibase इस डोमेन में जांच करने के लायक एक और प्रोजेक्ट है।

4

Migrate4j एक उम्मीदवार की तरह लगता है, लेकिन परियोजना उत्पादन के उपयोग के लिए पर्याप्त परिपक्व नहीं दिखती है।

6

मैं एक ही प्रश्न पर शोध करते समय इस पोस्ट में भाग गया। मैं अभी तक सबसे अच्छे उपकरण या दृष्टिकोण के बारे में किसी भी निष्कर्ष पर नहीं आया हूं, लेकिन एक उपकरण जिसे मैंने पार किया है, जिसका उल्लेख अब तक अन्य उत्तरों में नहीं किया गया है dbdeploy है। मुझे इन उपकरणों की किसी भी तुलना को पढ़ने में दिलचस्पी होगी।

कुछ अन्य प्रासंगिक संसाधन: मार्टिन फाउलर और प्रमोद सदैजेज Evolutionary Database Design पर कुछ हद तक वृद्ध पोस्ट, और Refactoring Databases: Evolutionary Database Design पुस्तक सदालेज और स्कॉट अंबालर द्वारा पुस्तक।

86

  • जो सुविधा तुलना Flyway
  • Liquibase
  • सी 5-db-माइग्रेशन
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • के लिए
  • dbmaintain
  • AutoPatch

आप और किसी और के लिए एक अच्छी शुरुआत करने के लिए किया जाना चाहिए काम

+1

अरे, मुझे पता नहीं था फ्लाईवे का यह बहुत दिलचस्प लग रहा है और मैं इसे करीब देखता हूं। फ्लाईवे का जिक्र करने के लिए धन्यवाद! –

+0

@ पास्कल थिवेंट आपकी टिप्पणी के लिए धन्यवाद! यदि आप इसका मूल्यांकन करते हैं, तो मुझे यहां या फ्लाईवे के इश्यू ट्रैकर में आपकी राय/आलोचना/सुझावों को सुनकर खुशी होगी :-) मैं तुलनात्मक मैट्रिक्स में डीबीएमेंटैन जोड़ने में भी देखूंगा क्योंकि यह एक महान दिखता है प्रतियोगी ... –

+0

निश्चित रूप से, मैं करूँगा। और तुलना में DbMaintain जोड़ने के लिए धन्यवाद, इस तरह के एक मैट्रिक्स होना बहुत अच्छा है। –

2

के लिए सही उपकरण का चयन भी है http://flywaydb.org

इस पर एक नजर है DbMaintain जिसे शुरू में Unitils के अंदर विकसित किया गया है लेकिन अब यह एक समर्पित परियोजना है। वर्तमान में हम इसका उपयोग कर रहे हैं और बहुत संतुष्ट हैं (जिसका मतलब यह नहीं है कि कोई अच्छा विकल्प नहीं है)। मैं उनके database+migration बुकमार्क (मेवेन का समर्थन करने वाले औजारों पर ध्यान केंद्रित करने के साथ) में अधिक से अधिक सूचीबद्ध करता हूं।

+0

इस तरह के उपकरण हमें तेजी से और सुरक्षित रूप से विकसित करने में मदद करेंगे –

+0

@ आर्थर हां, यह बहुत अच्छी बात है कि हमें कुछ टूल भी मिलते हैं। एक पर्यावरण से दूसरे वातावरण में कैस्केडिंग स्कीमा अपडेट अब हमारे लिए एक खुशी है :) –