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