ओपन सोर्स प्रोजेक्ट रिलीज़ में डेटाबेस स्कीमा परिवर्तन का प्रबंधन कैसे करें


9

मैं कुछ K-12 स्कूलों और कुछ कॉलेजों द्वारा उपयोग किए जाने वाले ओपन सोर्स PHP / MySQL वेब एप्लिकेशन का प्रबंधन करता हूं। मैं प्रोजेक्ट का एकमात्र डेवलपर भी हूं। हालांकि यह मेरे नियोक्ता द्वारा होस्ट किए गए एप्लिकेशन के स्रोत डाउनलोड की तुलना में थोड़ा अधिक हुआ करता था, मैंने पिछले साल इसे एक "वास्तविक" ओपन सोर्स प्रोजेक्ट में बनाने के लिए काम किया है, जिसमें दस्तावेज़ीकरण, गिने हुए रिलीज़, सार्वजनिक चैंज, आदि हैं।

मैं अपग्रेड प्रक्रिया को बेहतर बनाने के लिए देख रहा हूं, और संभावित दर्दनाक क्षेत्रों में से एक (विशेष रूप से आईटी विशेषज्ञता-भूखे स्कूलों के लिए) रिलीज के बीच डेटाबेस स्कीमा में परिवर्तन में है। वे अक्सर नहीं होते हैं या कठोर परिवर्तन होते हैं, लेकिन मैं इस प्रक्रिया पर सुझाव की सराहना करता हूं।

वर्तमान में, मैं डेटाबेस को एक नए इंस्टाल में सेटअप करने के लिए एक बेस एसक्यूएल स्क्रिप्ट को बनाए रखता हूं। इसमें वर्तमान रिलीज़ के लिए पूर्ण स्कीमा शामिल है; नए इंस्टॉलेशन के लिए कोई और कार्रवाई की आवश्यकता नहीं है। रिलीज़ के बीच होने वाले परिवर्तन upgrade-$releasever.sqlस्क्रिप्ट में संग्रहीत किए जाते हैं, और किसी भी रिलीज़ को छोड़ दिए जाने के लिए सभी अपग्रेड स्क्रिप्ट को चलाना आवश्यक होता है।

शेल स्क्रिप्ट अच्छी तरह से फिट नहीं हैं, क्योंकि हमारे कई उपयोगकर्ता शेल एक्सेस के बिना होस्ट पर काम करते हैं। अन्य प्राथमिकताओं के कारण, एक जटिल PHP ब्राउज़र-आधारित इंस्टॉलर / अपग्रेड स्क्रिप्ट भौतिक होने की संभावना नहीं है। हालाँकि, मैं उन्नयन को आसान बनाने के लिए ब्राउज़र-आधारित PHP स्क्रिप्ट के साथ कुछ करना पसंद करूँगा। यह कैसे दृष्टिकोण के लिए सुझाव?

जवाबों:


3

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


मैंने आपकी अपग्रेड स्क्रिप्ट को देखा। ऐसा लगता है कि मेरे दिमाग में वही था। धन्यवाद।
माइकल

2

Drupal CMS में आपकी समस्या का एक दिलचस्प समाधान है। मेरा सुझाव है कि सामान्य रूप से Drupal पर एक नज़र डालें, यदि आप PHP का उपयोग करके वेब-आधारित समाधान विकसित कर रहे हैं। यह मेरा पसंदीदा PHP CMS है और मैं यह कहने के लिए पर्याप्त पक्षपाती रहूंगा कि यह वहां से सर्वश्रेष्ठ है। ;)

Drupal काफी परिष्कृत डेटाबेस इंटरैक्शन रैपर प्रदान करता है। यह मॉड्यूल डेवलपर से वास्तविक डेटाबेस प्रकार को सार करने की अनुमति देता है, इसलिए आप वास्तव में परवाह नहीं करते हैं कि क्या सर्वर PostgreSQL, MySQL, आदि चला रहा है, आप अपना खुद का इंटरफ़ेस भी बना सकते हैं। प्रत्येक मॉड्यूल को मॉड्यूल.स्टॉल फ़ाइल प्रदान करना आवश्यक है जिसमें सम्‍मिलित है hook_schemaऔर hook_installhook_schemaमॉड्यूल के लिए टेबल स्कीमा घोषित करने के लिए उपयोग किया जाता है, जबकि hook_installस्थापना प्रक्रिया को चलाता है। आर्किटेक्चर अपडेट की धारणा का भी समर्थन करता है, इसलिए यदि उपयोगकर्ता के पास पहले से ही मॉड्यूल स्थापित है, तो सही अपडेट हुक लगाए जाते हैं और टेबल स्कीमा को आसानी से अपडेट करने की अनुमति देते हैं।

जरा गौर कीजिए : http://drupal.org/node/146862 भले ही द्रुपाल आपके लिए न हों, मुझे यकीन है कि आप उनके वास्तु निर्णयों से कुछ सीख सकते हैं।


0

हमने संस्करण फ़ोल्डर बनाकर ऐसा किया। हमने उस फ़ोल्डर में सभी डेटाबेस स्क्रिप्ट रखीं। जब यह एक नए ग्राहक को रोल आउट करने का समय आया तो उन्हें नवीनतम संस्करण मिला।

हमने इस फ़ोल्डर में कोई भी अपग्रेड स्क्रिप्ट भी रखी है। इस तरह हम एक ग्राहक को संस्करण x से संस्करण y में स्थानांतरित कर सकते हैं।

यह सबसे अच्छा तरीका नहीं है ... लेकिन यह हमारे लिए काम करता है।


अगर मुझे समझ में आता है, तो यह लगता है कि मैं इसे अभी कैसे संभाल रहा हूं - अपने उपयोगकर्ताओं को अपग्रेड स्क्रिप्ट चलाने के प्रभारी, और सही क्रम में।
माइकल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.