2010-03-25 12 views
6

यह मेरे दिमाग पर एक बड़ा प्रश्न चिह्न दिया गया है।Mercurial या गिट शाखाओं के साथ डेटाबेस ब्रांचिंग से निपटने के लिए मानक या सबसे अच्छा तरीका क्या है?

मैं अपने वेब सॉफ्टवेयर के लिए बहुत जल्द Mercurial या Git पर जा रहा हूं, और कभी-कभी मेरी शाखाओं को महत्वपूर्ण डेटाबेस परिवर्तन की आवश्यकता होती है जो अन्य शाखाओं को नहीं देखना चाहिए। यह, मैं हमेशा अपनी शाखाओं के लिए एक ही डेटाबेस साझा नहीं कर सकता।

वहाँ शाखाओं और क्लोनिंग के लिए डेटाबेस परिवर्तन से निपटने के कुछ मानक तरीका है? आप सब क्या करते हो मैं MySQL का उपयोग कर रहा हूँ।

उत्तर

2

क्लोनिंग से निपटने के लिए, अपने डेटाबेस बहु उपयोगकर्ता होने के लिए बनाया जाना चाहिए।

स्कीमा में बदलावों के लिए, उस शाखा के लिए स्कीमा के हिस्से के रूप में स्कीमा में बदलाव करें।

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

+0

क्या आप एक सूचक द्वारा मतलब है? क्या आप प्रत्येक शाखा के लिए डीएसएन बदलने के बारे में बात कर रहे हैं? –

+0

"बहु-उपयोगकर्ता होने के लिए डिज़ाइन किया गया" से आपका क्या मतलब है? क्या आपका मतलब है, अगर प्रत्येक डेवलपर की शाखा है, तो उसे उन शाखाओं में से प्रत्येक के लिए काम करना चाहिए? –

+0

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

5

एक डेटाबेस changset उपकरण का उपयोग वास्तव में सहायक हो सकता है। मैंने डीबी के लिए संस्करण नियंत्रण प्रबंधित करने के लिए काम पर, तरल पदार्थ (http://www.liquibase.org) का उपयोग किया है। मैं उस उपकरण को किसी भी व्यक्ति को गर्मजोशी से अनुशंसा करता हूं। लिक्विबेस कॉन्फ़िगर करने योग्य रोलबैक परिदृश्यों के साथ, परिवर्तनों का समर्थन करता है। हालांकि, यह वास्तविक डेटा नहीं, स्कीमा के प्रबंधन के लिए एक उपकरण है। मैं टेबल डेटा को अद्यतित रखने के लिए इसका उपयोग करने की कोशिश नहीं करता।

हालांकि, मुझे अभी भी लगता है कि आपकी सबसे अच्छी शर्त विभिन्न स्रोत शाखाओं के लिए तरल पदार्थ का उपयोग करना है, और अलग-अलग स्कीमा हैं।

+0

चेंजलॉग में मर्ज विवादों को हल करना आसान था? क्या इसमें चेकआउट के लिए अंतर्निहित समाधान है? – inf3rno

0

डेटाबेस स्कीमा स्वयं डेटाबेस (रिकॉर्ड किया गया) डेटाबेस है जिसका संरचना, कम या कम, SQL मानक के INFORMATION_SCHEMA द्वारा परिभाषित किया गया है।

अब, डीबीएमएस को समय-समय पर किसी एक बिंदु पर केवल एक एकल डेटाबेस मान की अनुमति देने के लिए काफी जानबूझकर डिजाइन किया गया है। और चूंकि सूची ही "बस INFORMATION_SCHEMA डेटाबेस के लिए एक डेटाबेस मूल्य", एसक्यूएल सिस्टम समर्थन है, काफी जान-बूझकर, समय में किसी भी एक ही बिंदु पर केवल एक एकल डाटाबेस संरचना।

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