2008-08-27 9 views
10

डेटाबेस स्कीमा को अपग्रेड करने के लिए सॉफ़्टवेयर की एक नई रिलीज को बहुत अधिक ट्रिकियर इंस्टॉल करना है। ऐसा करने के लिए सबसे अच्छे अभ्यास क्या हैं?डाटाबेस स्कीमा उन्नयन के लिए चेकलिस्ट

मैं एक चेकलिस्ट या कार्रवाई आइटम के समय के लिए देख रहा हूँ, इस तरह के रूप में

  • 8:30
  • 8:45 क्षुधा
  • शट डाउन संशोधित स्कीमा
  • 9:15 नए एप्लिकेशन
  • स्थापित
  • 9:30 पुनरारंभ डीबी

आदि, यह दिखाता है कि जोखिम और डाउनटाइम को कम करने के तरीके को कैसे दिखाया जाए। इस तरह के

  • चीजें धराशायी हो
  • मौजूदा एप्लिकेशन
  • 'हॉट' अपडेट करने के लिए प्रभाव को कम करने जाना है, तो थोड़ी देर के डेटाबेस उत्पादन सर्वर
  • को परीक्षण करने के लिए देव से बढ़ावा देने
  • चल रहा है उन्नयन से बाहर का समर्थन कर जैसे मुद्दे

विशेष रूप से रुचि के हैं।

उत्तर

5

मुझे इसके साथ बहुत अनुभव है। मेरा आवेदन अत्यधिक पुनरावृत्त है, और स्कीमा परिवर्तन अक्सर होता है। मैं लगभग 2 से 3 सप्ताह तक एक उत्पादन रिलीज करता हूं, जिसमें प्रत्येक के लिए मेरी फोगबगज़ सूची से 50-100 आइटम साफ़ किए जाते हैं। पिछले कुछ वर्षों में हमने जो भी रिलीज किया है, उसे नई सुविधाओं का समर्थन करने के लिए स्कीमा परिवर्तन की आवश्यकता है।

यह कुंजी वास्तव में लाइव सर्वर पर बनाने से पहले परीक्षण वातावरण में कई बार परिवर्तनों का अभ्यास करना है।

मैं एक तैनाती चेकलिस्ट फ़ाइल रखता हूं जो टेम्पलेट से कॉपी किया गया है और फिर सामान्य से बाहर की गई किसी भी चीज़ के साथ प्रत्येक रिलीज के लिए भारी रूप से संपादित किया जाता है।

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

एकीकरण परीक्षण चक्र की तैयारी करते समय, मैं एक परीक्षण सर्वर पर अपनी चेकलिस्ट के माध्यम से जाता हूं, जैसे कि वह सर्वर उत्पादन था। फिर, इसके अलावा, मुझे उत्पादन डेटाबेस की वास्तविक प्रतिलिपि मिलती है (यह आपके ऑफसाइट बैकअप को स्वैप करने का एक अच्छा समय है), और मैं एक पुनर्स्थापित स्थानीय संस्करण पर स्क्रिप्ट चलाता हूं (जो भी अच्छा है क्योंकि यह मेरा साबित करता है नवीनतम बैकअप ध्वनि है)। मैं यहाँ एक पत्थर के साथ कई पक्षियों की हत्या कर रहा हूँ।

  1. देव: सभी परिवर्तनों स्टूडियो के साथ कभी नहीं, परिवर्तन स्क्रिप्ट में किया जाना चाहिए

    ताकि 4 डेटाबेस कुल है।

  2. टेस्ट: समाकलन परीक्षण यहां होता उत्पादन की
  3. कॉपी: अंतिम मिनट तैनाती अभ्यास
  4. उत्पादन

आप सच में, सच यह सही पाने के लिए जब आप उत्पादन पर कर की जरूरत है। स्कीमा परिवर्तनों का समर्थन करना मुश्किल है।

जहां तक ​​हॉटफिक्स, मैं केवल हॉटफिक्स प्रक्रियाओं को कभी भी स्कीमा नहीं करूँगा, जब तक कि यह व्यवसाय के लिए बहुत अलग परिवर्तन और महत्वपूर्ण न हो।

1

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

वर्तमान तरीका जो हम करते हैं, इसमें स्पष्ट त्रुटियां होती हैं, और मैं अन्य सुझावों के लिए खुला हूं।

  1. स्थिर डेटा के साथ एक स्कीमा डंप है जो अद्यतित और संस्करण नियंत्रण में रहने की आवश्यकता है।
  2. हर बार जब आप एक स्कीमा बदलते क्रिया करते हैं, ALTER, CREATE, आदि इसे फ़ाइल में डंप करें और इसे संस्करण नियंत्रण में फेंक दें।
  3. सुनिश्चित करें कि आप मूल एसक्यूएल डीबी डंप अपडेट करें।
  4. जब लाइव करने के लिए धक्का देते हैं तो सुनिश्चित करें कि आप या आपकी स्क्रिप्ट एसबीएल फ़ाइलों को डीबी पर लागू करती है।
  5. पुराने एसक्यूएल फाइलों को साफ़ करें जो संस्करण नियंत्रण में हैं क्योंकि वे बूढ़े हो जाते हैं।

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

डीबी विशिष्ट संस्करण नियंत्रण बहुत बढ़िया होगा। शायद ऐसा कुछ है जो ऐसा करता है और यदि वहां नहीं है तो शायद होना चाहिए।

1

और स्कॉट Ambler कागज अपने भूख whets अगर मैं प्रमोद जम्मू Sadolage साथ अपनी पुस्तक की सिफारिश कर सकते 'पुनर्रचना डेटाबेस' कहा जाता है - http://www.ambysoft.com/books/refactoringDatabases.html

वहाँ भी उपयोगी सलाह और जानकारी का एक बहुत याहू पर चंचल डाटाबेस समूह में है - http://tech.groups.yahoo.com/group/agileDatabases/

1

दो देने योग्य बातें:

  1. यह हो जाता है कह के बिना ... तो मैं इसे दो बार कहूँगा।
    सत्यापित करें कि आपके पास वैध बैकअप है।
    सत्यापित करें कि आपके पास वैध बैकअप है।

  2. @mk। डेटाबेस संस्करण नियंत्रण पर Jeff's blog post देखें (यदि आपने पहले से नहीं किया है)