oracle - यवस - हिंदी में डेटाबेस डिजाइन की प्रक्रिया




आप उत्पादन डेटाबेस में स्कीमा अपग्रेड कैसे प्रबंधित करते हैं? (6)

liquibase.org:

  1. यह हाइबरनेट परिभाषाओं को समझता है।
  2. यह हाइबरनेट की तुलना में बेहतर स्कीमा अद्यतन एसक्यूएल उत्पन्न करता है
  3. यह लॉग करता है कि डेटाबेस में कौन से उन्नयन किए गए हैं
  4. यह दो-चरणीय परिवर्तनों को संभालता है (यानी कॉलम "foo" हटाएं और फिर "foo" पर एक अलग कॉलम का नाम बदलें)
  5. यह सशर्त उन्नयन की अवधारणा को संभालता है
  6. डेवलपर वास्तव में समुदाय को सुनता है (हाइबरनेट के साथ यदि आप "इन" भीड़ में नहीं हैं या नौसिखिया हैं - आपको मूल रूप से अनदेखा किया जाता है।)

http://www.liquibase.org

यह एक अनदेखा क्षेत्र प्रतीत होता है जो वास्तव में कुछ अंतर्दृष्टि का उपयोग कर सकता है। इसके लिए आपके सर्वोत्तम अभ्यास क्या हैं:

  • अपग्रेड प्रक्रिया बनाना
  • त्रुटियों के मामले में समर्थन करना
  • सिंकिंग कोड और डेटाबेस परिवर्तन
  • तैनाती से पहले परीक्षण
  • तालिका को संशोधित करने के यांत्रिकी

आदि...


आम तौर पर मेरा नियम है: "एप्लिकेशन को अपनी खुद की स्कीमा का प्रबंधन करना चाहिए।"

इसका मतलब है कि स्कीमा अपग्रेड स्क्रिप्ट एप्लिकेशन के लिए किसी भी अपग्रेड पैकेज का हिस्सा हैं और एप्लिकेशन प्रारंभ होने पर स्वचालित रूप से चलाए जाते हैं। त्रुटियों के मामले में एप्लिकेशन शुरू करने में विफल रहता है और अपग्रेड स्क्रिप्ट लेनदेन प्रतिबद्ध नहीं है। इसका नकारात्मक पक्ष यह है कि एप्लिकेशन को स्कीमा में पूर्ण संशोधन पहुंच होनी चाहिए (यह डीबीए को परेशान करता है)।

टेबल संरचनाओं का प्रबंधन करने के लिए मुझे हाइबरनेट्स स्कीमा अपडेट सुविधा का उपयोग करके बहुत सफलता मिली है। अपग्रेड स्क्रिप्ट को केवल वास्तविक डेटा प्रारंभिकता को संभालने और कॉलम को कभी-कभी हटाने के लिए छोड़कर (SchemaUpdate ऐसा नहीं करता है)।

परीक्षण के संबंध में, चूंकि अपग्रेड एप्लिकेशन का हिस्सा हैं, इसलिए उनका परीक्षण परीक्षण के लिए परीक्षण चक्र का हिस्सा बन जाता है।

बाद में विचार: यहां अन्य पदों में कुछ आलोचनाओं को ध्यान में रखते हुए, नियम बताते हैं कि "यह स्वयं है"। यह केवल वास्तव में लागू होता है जहां एप्लिकेशन स्कीमा का मालिक होता है, आमतौर पर उत्पाद के रूप में बेचे जाने वाले सॉफ़्टवेयर के मामले में होता है। यदि आपका सॉफ़्टवेयर अन्य सॉफ़्टवेयर के साथ डेटाबेस साझा कर रहा है, तो अन्य विधियों का उपयोग करें।


मैं रेड गेट उत्पादों का एक बड़ा प्रशंसक हूं जो डेटाबेस स्कीमा अपडेट करने के लिए SQL पैकेज बनाने में मदद करता है। वर्जनिंग और रोलबैक के साथ मदद करने के लिए डेटाबेस स्क्रिप्ट को स्रोत नियंत्रण में जोड़ा जा सकता है।



ये सभी भारी विषय हैं, लेकिन अद्यतन करने के लिए मेरी सिफारिश यहां दी गई है।

आपने अपना प्लेटफ़ॉर्म निर्दिष्ट नहीं किया है, लेकिन एनएएनटी वातावरण बनाने के लिए मैं Tarantino उपयोग करता हूं। प्रत्येक डेटाबेस अद्यतन के लिए आप प्रतिबद्ध करने के लिए तैयार हैं, आप एक परिवर्तन स्क्रिप्ट (RedGate या किसी अन्य उपकरण का उपयोग कर) बनाते हैं। जब आप उत्पादन में निर्माण करते हैं, तो टैरेंटिनो जांचता है कि डेटाबेस पर स्क्रिप्ट चलाया गया है (यह ट्रैक रखने के लिए आपके डेटाबेस में एक टेबल जोड़ता है)। यदि नहीं, तो स्क्रिप्ट चलाया जाता है। डेटाबेस संस्करणों के प्रबंधन से यह सभी मैन्युअल कार्य (पढ़ें: मानव त्रुटि) लेता है।


राय

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





database-administration