2010-06-07 15 views
5

अभी मेरे पास एक PHP प्रोजेक्ट है और मैं एसवीएन द्वारा कोड में सभी परिवर्तनों को ट्रैक करता हूं। मैं डेटाबेस संरचना में किए गए परिवर्तनों को ट्रैक करना भी चाहूंगा।डीबी संरचना को ट्रैक करने के लिए सही उपकरण

उपयोग करने के लिए सही उपकरण कौन सा है?

+0

अच्छा सवाल! इसके लिए एक मानक स्क्रिप्ट होना उपयोगी होगा। – powtac

+0

एक विशिष्ट आरडीबीएमएस के लिए - यदि हां, तो कौन सा - या एक सामान्य है? मैंने अतीत में PostgreSQL के लिए एक PHP स्क्रिप्ट का उपयोग किया है (लेकिन नाम याद नहीं कर सकता), यह केवल नए कॉलम और कॉलम परिवर्तनों को कवर करता है हालांकि आईआईआरसी ने हटाए गए लोगों को नहीं छोड़ा। – wimvds

+1

ठीक है, बस मेरे संग्रह पर एक नज़र डाली थी: पी। प्रश्न में लिपि [ज़ोंगल] (http://zongle.sourceforge.net/) थी, और इसमें कॉलम परिवर्तन शामिल नहीं थे, केवल कॉलम जोड़ ... क्या यह ऐसा कुछ है जिसे आप ढूंढ रहे हैं? – wimvds

उत्तर

1

डेटाबेस संरचना के परिवर्तनों को ट्रैक करने के लिए विभिन्न प्रकार के टूल्स हैं। http://www.mysql.com/products/workbench/

आप इस उपकरण के साथ अपने डाटाबेस modelize sychronisation के साथ अद्यतन करने के लिए सक्षम होने के लिए कर सकते हैं:

एक बहुत अच्छा एक mysql Workbench है।

उपकरण का एक अन्य प्रकार है कि SVN के लिए एकदम सही हो मेरे: पीएचपी माइग्रेशन

http://code.google.com/p/mysql-php-migrations/

इस टूल से

आप विभिन्न लिपियों बनाने: उदाहरण के लिए 001_initial.php 002_changes.php।

और जब आप टूल निष्पादित करते हैं, तो यह उन फ़ाइलों को लागू करेगा जो आपकी स्कीमा को अद्यतित करने के लिए लागू नहीं किए गए थे।

मुझे आशा है कि यह आपकी मदद करेगा।

1

आमतौर पर मेरे पास एक php स्क्रिप्ट है जिसका उपयोग मैं स्थापना प्रक्रिया और परीक्षण चरण के दौरान डेटाबेस संरचना बनाने के लिए करता हूं।

मुझे पूरे प्रोजेक्ट को ट्रैक करने वाले एसवीएन रिपोजिटरी में सही होने के लिए बहुत उपयोगी लगता है (आपके पास कोडबेस परिवर्तन से जुड़े परिवर्तन स्वचालित रूप से होते हैं)।

2

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

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

0

डेटाबेस परिवर्तन के लिए, हम (था, अब वहां काम कर रहे) है VCS में एक निर्देशिका:

+ dbchanges 
|_ 01_database 
|_ 02_table 
|_ 03_data 
|_ 04_constraints 
|_ 05_functions 
|_ 06_triggers 
|_ 07_indexes 

जब आप डेटाबेस आप एक sql फ़ाइल में परिवर्तन डाल करने के लिए एक परिवर्तन करना, में फ़ाइल नाम के रूप में वर्तमान दिनांक और समय के साथ सही निर्देशिका। जब आप अपना डीबी अपडेट करना चाहते हैं, तो आप एकीकरण स्क्रिप्ट चलाते हैं, जो क्रमशः इन निर्देशिकाओं के माध्यम से जाता है, और डीबी में प्रत्येक परिवर्तन आयात करता है।

निर्देशिकाओं को इस तरह से नामित किया गया है, यह सुनिश्चित करने के लिए कि जिस क्रम में स्क्रिप्ट चल रहे हैं वह सही है। (इसलिए स्क्रिप्ट जो किसी तालिका में डेटा डालने का प्रयास करती है, स्क्रिप्ट से पहले नहीं चलती है जो टेबल कहा जाता है)

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

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

0

Liquibase पर एक नज़र डालें।

यह एक बहुत अच्छा डेटाबेस बदलें प्रबंधन सॉफ्टवेयर है। हालांकि इसे लागू करना थोड़ा मुश्किल है।

- इरशाद।

संबंधित मुद्दे