क्या प्रैक्टिस या टूल डेटाबेस की निरंतर तैनाती को सक्षम करते हैं?


17

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

मुझे पता है कि केवल डेटाबेस ऑब्जेक्ट्स, यानी टेबल और कॉलम को जोड़ने, उन्हें संशोधित करने या हटाने के रूप में प्रथाएं नहीं हैं - डेटाबेस स्कीमा के निकट आने का यह पूरी तरह से additive तरीका यह सुनिश्चित करने का लाभ है कि स्कीमा क्रमिक रूप से जटिल की कीमत पर पीछे की ओर संगत है। स्कीमा।

समान रूप से फ्लाईवे और रेडी रोल जैसे उत्पाद हैं जो स्कीमा के संस्करणों के बीच लिखे जाने वाले माइग्रेशन को लिखने में सहायता करते हैं।

डेटाबेस स्कीमा की निरंतर तैनाती की अनुमति देने के लिए वर्तमान में कौन से अन्य अभ्यास और उपकरण मौजूद हैं, जहां डेटा अखंडता एक चिंता का विषय है?


यदि DB तक पहुँचने वाले कोड में परिवर्तन नहीं होता है तो DB स्कीमा (परिवर्तन) या माइग्रेशन की आवश्यकता क्यों होगी? (यह मानते हुए कि कोई डीबी एक्सेस नहीं करता है, जो इसे समझा सकता है)
डैन कॉर्निलेस्क्यू

अरे @DanCornilescu, प्रदर्शन के मुद्दों को कम करने / पता करने के लिए "अनुक्रमित" जोड़ने के बारे में कैसे?
Pierre.Vriens

सच कहूं तो मैं पारंपरिक डीबी के बारे में बहुत कम जानता हूं - यह सवाल उनके सूचकांक पर बहुत अच्छी तरह से लागू हो सकता है। मैं google के क्लाउड डेटास्टोर का उपयोग कर रहा हूं, जिसके लिए बदलते हुए इंडेक्स आमतौर पर ऐप कोड में बदलाव के साथ आते हैं। मेरी टिप्पणी एक ईमानदार सवाल है, किसी भी तरह से रिचर्ड के सवाल के बारे में कुछ "शिकायत" नहीं है (जो मैंने ऊपर उठाई)।
डैन कॉर्निलेस्कु

@DanCornilescu मैं भी (ईमानदारी से) विश्वास करता हूं कि आपने अपनी पूर्व टिप्पणी में क्या लिखा था (और मेरी पूर्व टिप्पणी सिर्फ आपकी पहली टिप्पणी में प्रश्न का संभावित उत्तर प्रदान करने का एक प्रयास थी)। अगला (वास्तविक?) प्रश्न
Pierre.Vriens

आपको फ्लाईवे दिलचस्प फ्लाईवेब.ओआर
रावन एंडरसन

जवाबों:


13

प्रमोद सदलगे और स्कॉट एंबलर ने एक पुस्तक रिफैक्टिंग डेटाबेस: एवोल्यूशनरी डेटाबेस डिज़ाइन लिखा है जो एक सीडी ऑर्ग / टीम में डीबी के विषय के लिए एक अविश्वसनीय रूप से ठोस प्राइमर है।


क्या आप एक सारांश जोड़ सकते हैं?
030

11

चुनौतियाँ


मुझे पता है कि केवल डेटाबेस ऑब्जेक्ट्स, यानी टेबल और कॉलम जोड़ने जैसी प्रथाएं हैं, उन्हें कभी भी संशोधित या हटाना नहीं है

एक कंपनी में मैंने काम किया, कच्चे डेटा की एक रोलिंग विंडो लगभग 6 महीने के बराबर थी और 10 टीबी तक खा गई। डेटा को फिर RDBMS प्रारूप में संसाधित किया गया था, जिसमें उपयोग योग्य डेटा के 6 टीबी की लागत थी, जो रिपोर्ट किए गए डेटा के लगभग 10 वर्षों के लिए जिम्मेदार थी। इस स्तर पर, इस प्रकार की प्रथाएं केवल व्यावहारिक नहीं हैं। भंडारण महंगा है - शायद सबसे बड़ी गणना खर्च। यह कई दिलचस्प चुनौतियां प्रदान करता है:

  1. बैकअप - इन्सोडब प्लगइन्स महान और सभी हैं, लेकिन उस डेटा पर बैकअप समय बस उतना ही व्यावहारिक नहीं है
  2. बड़े डेटासेट के लिए बार - बार पुनर्स्थापित करें - विशेष रूप से यदि आपको परिचालन अवस्था में वापस आने के बाद पकड़ने के लिए प्रतिकृति की आवश्यकता होती है, तो दिन या सप्ताह लग सकते हैं
  3. नए उदाहरण बनाना / सीडिंग करना - अक्सर आपके द्वारा देव / परीक्षण में किए जा रहे कार्य में आपके डेटासेट में ETL (एक्सट्रैक्ट, ट्रांसफ़ॉर्म और लोड) कार्य शामिल होते हैं। क्यूए परीक्षण इकाइयों का उपयोग करके इन्हें सत्यापित करने की आवश्यकता है, लेकिन इसे गैर-विनाशकारी तरीके से करने की आवश्यकता है ताकि मूल उत्पादन डेटासेट संरक्षित हो। किसी आपदा में, आप इस समझ पर लंबे समय तक बहाल करने के लिए तैयार हो सकते हैं कि बैकअप एक बीमा पॉलिसी है और इरादे से बचने के लिए, DevOps विकास वर्कफ़्लो की आवश्यकता है कि, अनिवार्य रूप से, आप एक पुनर्स्थापना करने में सक्षम हो या एक नियमित आधार पर आपके डेटा की प्रतिलिपि (शायद दिन में कई बार)
  4. क्षमता - मेरे द्वारा बताए गए पैमाने पर उस डेटा के चारों ओर घूमना बहुत I / O गहन हो सकता है। न केवल आपको 1-3 में वर्णित समस्याओं को संबोधित करने की आवश्यकता है, लेकिन आपको इसे इस तरह से करने की आवश्यकता है जो आपके उत्पादन सिस्टम में आउटेज या प्रदर्शन मंदी का कारण नहीं बनता है।

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

आवश्यकताओं को परिभाषित करना


नतीजतन, आपको कई आवश्यकताओं को परिभाषित करने की आवश्यकता है:

  1. आरटीओ - बैकअप के लिए आरटीओ या रिस्टोर टाइम ऑब्जेक्टिव डेटाबेस बैकअप समाधान के सबसे महत्वपूर्ण ड्राइवरों में से एक है। हालांकि, पहली बार में यह अन्य समस्याओं के अधिकांश के लिए प्रासंगिक नहीं हो सकता है, यह अत्यंत प्रासंगिक हो जाता है जब आप पूछते हैं कि "क्या होगा अगर मैंने नए उदाहरण बनाने या बीजने के लिए अपने बैकअप समाधान का उपयोग किया है?"। मैं अगले भाग में ऐसा करने के लिए कुछ तकनीकों को कवर करूँगा।
  2. आरपीओ - बैकअप के लिए आरपीओ या पुनर्स्थापना बिंदु उद्देश्य ए) को परिभाषित करता है कि आप कितने मिनट (मिनट, दिन, सप्ताह, महीने, या साल) को पुनर्स्थापित करने में सक्षम हैं। बी) विभिन्न स्तरों पर बैकअप अंतराल और सी) आप किस तरह से बहाल कर सकते हैं । उदाहरण के लिए, ई-मेल डेटाबेस के लिए, संदेश स्तर बैकअप - एक विशिष्ट ई-मेल को पुनर्स्थापित करना - अक्सर मांग की जाती है। इसी तरह, आप पा सकते हैं कि कुछ दिनों में डेटा पूरी तरह से बेकार हो जाता है - इसलिए एक साल में वापस बहाल करने का कोई मतलब नहीं है।
  3. आपके डेटासेट का आकार - यह महत्वपूर्ण है क्योंकि 1MB डेटाबेस के लिए, आपका RTO अधिकांश बैकअप उत्पादों और समाधानों के साथ प्राप्त किया जा सकता है। हालांकि 10TB डेटाबेस के लिए, आप पाएंगे कि LTO 3 टेप के लिए एक पूर्ण, पंक्ति स्तर का बैकअप शायद आपके RTO को प्राप्त नहीं करेगा और आपके RPO के साथ हस्तक्षेप कर सकता है क्योंकि बैकअप आपकी बैकअप विंडो से अधिक होने लगते हैं। आप वास्तव में डेटासेट के इस बड़े हिस्से पर सिर्फ एक mysqldump नहीं कर सकते हैं, लेकिन संभवतः 1MB डेटाबेस पर इसके साथ भाग सकते हैं।
  4. डेटाबेस स्थिरता - एक अंतिम चीज जो निरंतर तैनाती, साइट विश्वसनीयता, स्केलेबिलिटी और उच्च-लाभकारीता में एक बड़ा अंतर बनाती है जब डेटाबेस के साथ काम करना आपकी आवश्यकता (या इसके अभाव) स्थिरता के लिए है। तीन बुनियादी प्रकार हैं: तत्काल स्थिरता, जस्ट-इन-टाइम (जेआईटी) स्थिरता और अंतिम स्थिरता

उपरोक्त प्रमुख विचारों के अलावा, आपको लाइसेंसिंग और समर्थन आवश्यकताओं (खुले स्रोत या बंद स्रोत; घर के समर्थन में, तीसरे पक्ष के समर्थन या विक्रेता समर्थन) पर विचार करने की आवश्यकता है आवेदन / भाषा आवश्यकताओं (कई डेटाबेस के लिए कनेक्टर महत्वपूर्ण हो सकते हैं;) आपका एप्लिकेशन संकलित किया गया है? क्या आपके पास स्रोत कोड तक पहुंच है? क्या आप इसे पुनः प्राप्त कर सकते हैं, या क्या यह किसी विक्रेता द्वारा प्रदान किया गया है? या क्या यह एक व्याख्या की गई भाषा पर चलता है?) राजनीतिक आवश्यकताएं (क्या आपका संगठन केवल ओरेकल पर भरोसा करता है? क्या वे ओरेकल से नफरत करते हैं? ? oracle engine में बनाया गया है! हम कभी भी MariaDB पर कैसे पोर्ट कर सकते हैं?

ये सभी चीजें (महत्वपूर्ण) आपके लिए उपलब्ध उपकरणों को प्रभावित करती हैं।

इन-हाउस डेटा प्रबंधन के लिए कुछ विकल्प


नोट: निम्नलिखित कोई रास्ता नहीं है, और अन्य SE उपयोगकर्ताओं को अतिरिक्त सुझावों के साथ झंकार करना चाहिए।

इस तरह से सामान्य विचार के साथ, मैं आपको उपरोक्त संबोधित करने के लिए कुछ तकनीकों और तकनीकों के साथ प्रदान करता हूं। सबसे पहले, अपने आप से पूछें कि क्या आपको वास्तव में RDBMS का उपयोग करने की आवश्यकता है या यदि Hadoop, CouchDB या यहां तक ​​कि ऑब्जेक्ट ओरिएंटेड स्टोरेज (स्विफ्ट जैसा कुछ) के साथ असंरचित डेटा एक विकल्प है।

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

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

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

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

इन डेल्टा क्लोनों में आपकी समग्र भंडारण आवश्यकता को कम करने का अतिरिक्त लाभ है - आप अपने विकास, परीक्षण और सत्यापन करने के लिए अपने उत्पादन डेटाबेस डेटा के कई क्लोन या उदाहरण को स्पॉन कर सकते हैं। यदि आप केवल अपने बड़े डेटासेट की एक-एक प्रति (छोटे होने की संभावना हो तो) की एक प्रति रख रहे हैं, तो आप अपनी समग्र संग्रहण लागत और पदचिह्न को कम करते हैं।

यहाँ केवल चाल यह है कि यह एक पूर्ण बैकअप समाधान नहीं बन सकता है क्योंकि "बैकअप" अभी भी आपके फाइलर पर रहता है। इसके लिए आपको कुछ उपयोग करने की आवश्यकता हो सकती है नेटएप एक स्नैप मिरर का उपयोग करता है जो फाइलर और डेटासेंटर्स के बीच डेटा (rsync- शैली प्रौद्योगिकी का उपयोग करके) दर्पण करेगा, या कुछ प्रकार के एकीकृत बैकअप समाधान का उपयोग करेगा जो आपके डेल्टा स्नैपशॉट या में से किसी एक को टेप करने के लिए बैकअप कर सकता है फ्लेक्स क्लोन।

हालांकि इसमें एक प्रमुख दोष है: आपके सभी डेटा - देव, परीक्षण और ठेस अभी भी एक ही फाइलर और स्टोरेज हेड पर I / O का उपयोग कर रहे हैं। इसके चारों ओर काम करने के लिए, एक दूसरे फाइलर पर एक दास डेटाबेस उदाहरण बनाने पर विचार करें जो आपके लिए टेस्ट और / या देव फाइलर के लिए बोने का बिंदु हो सकता है, या अपने आवेदन पत्र के लिए एक लोड बैलेंसर / अप्लीकेशन डिलीवरी कंट्रोलर का उपयोग करने पर विचार करें। परीक्षण (और / या देव) पर्यावरण (ओं)। यह उन मुद्दों के लिए उत्पादन को बढ़ावा देने से पहले अपने क्यूए / टेस्ट वातावरण में prodcution यातायात फेंकने का अतिरिक्त लाभ है जो तुरंत ध्यान नहीं दिया जा सकता है। फिर आप उत्पादन ट्रैफ़िक और उपयोगकर्ता व्यवहार के आधार पर त्रुटियों के लिए अपने लॉग की जांच कर सकते हैं।

इसके बाद आपको निरंतर तैनाती के तरीकों के साथ उपयोग करने के लिए कुछ स्क्रिप्ट का उपयोग प्रोग्रामेटिक रूप से स्पॉन और पूरे (और बड़े) डेटासेट को नष्ट करने की अनुमति देना चाहिए।

स्केलेबिलिटी और उच्च उपलब्धता

जब आप निरंतर तैनाती के बारे में पूछते हैं, तो DevOps को केवल निरंतर तैनाती से अधिक माना जाता है - इसलिए मैं अतिरेक, मापनीयता और उच्च उपलब्धता के बारे में कुछ बिट्स को शामिल करने जा रहा हूं।

मैंने उल्लेख किया है, जेआईटी, तत्काल और अंततः स्थिरता। यह वह जगह है जहाँ वार्स आरडीबीएमएस इंजन आते हैं। बस अतुल्यकालिक प्रतिकृति को कॉन्फ़िगर करके अंततः सुसंगतता अपेक्षाकृत आसान है। हालांकि यह कुछ टकरावों का कारण बन सकता है * (क्या होगा अगर आपकी एप्लिकेशन परत क्लस्टर के एक तरफ डेटा को अपडेट करती है और प्रतिकृति पूरा होने से पहले क्लस्टर के दूसरी तरफ?) तत्काल स्थिरता के लिए, गैलेरा क्लस्टर को देखें जो तुल्यकालिक प्रतिकृति को मजबूर करेगा, लेकिन मापनीयता के मुद्दे लेकिन यह दोनों दुनिया का सबसे बुरा लगता है।

आमतौर पर, हालांकि, अधिकांश कवच को पूरी तरह से समकालिक प्रतिकृति की आवश्यकता नहीं होती है - यह आमतौर पर केवल बहुत विशिष्ट (और विदेशी) उच्च-लेखन वातावरण के लिए आवश्यक होता है जहां टेबल शेरिंग के साथ मल्टी-मास्टर की आवश्यकता होती है। अधिकांश एप्लिकेशन डेटाबेस प्रॉक्सी का उपयोग करके जस्ट-इन-टाइम सुसंगतता से निपट सकते हैं। उदाहरण के लिए, ScaleArc प्रतिकृति स्थिति और ट्रैक की निगरानी करेगा जहां राइट बस-इन-टाइम स्थिरता और उपस्थिति प्रदान करने के लिए लिखा गया था (जब तक प्रतिकृति कैच हो जाती है तब तक उप-पाठ अनुरोध भेजने के लिए)डेटाबेस स्थिरता की। ScaleArc Postgres, MySQL, MariaDB, Oracle और MSSQL के साथ मिलनसार है और अपने डेटाबेस को शार्प कीज़ का उपयोग नहीं करने वाले अनुप्रयोगों के लिए अपने डेटाबेस को शार्प / पार्टीशन करने के लिए नियमित एक्सप्रेशन का उपयोग कर सकता है। आपके कॉन्फ़िगरेशन प्रबंधन सॉफ़्टवेयर के साथ सहभागिता करने के लिए इसमें एक मजबूत REST API भी है - और उनकी सहायता टीम बकाया है

इसी तरह, आप एक मुफ्त विकल्प पर विचार करना चाह सकते हैं, मैक्सबेल मारियाडीबी के लिए मारियाडीबी टीम द्वारा विकसित किया गया है। हालांकि इसमें GUI और कुछ caleArc की कैशिंग विशेषताओं का अभाव है।

अंत में, MySQL फैब्रिक (और इन-रैम केवल MySQL क्लस्टर - यदि आप इतना रैम बर्दाश्त कर सकते हैं) अन्य संभावित हैं - विशेष रूप से MySQL के नए प्रॉक्सी के साथ। यह आपके वातावरण को मापनीयता और अतिरेक घटक प्रदान कर सकता है।

पोस्टग्रैज और ओरेकल में आपके लिए आवश्यक प्रतिकृति और पैनापन विशेषताएं होनी चाहिए, लेकिन अगर आपको प्रॉक्सी की आवश्यकता है तो स्केलएस्क्यू अच्छी तरह से जोड़ी जाएगी।

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


6

हम ऐप में पोस्टग्रेज स्कीमा, और कैसंड्रा स्कीमा के प्रबंधन के लिए पिलर के प्रबंधन के लिए फ्लाईवे का उपयोग करते हैं । यदि एप्लिकेशन अपने स्वयं के स्कीमा का प्रबंधन करता है तो हमने इसे सबसे अच्छा पाया है।

ऐप्स का अपना स्कीमा प्रबंधित करने से पहले हमें एक भयानक अनुभव था, जो कि स्कीमा था।


6

जब तक आप स्कीमा ज़िम्मेदारी को अनुप्रयोग टीम में स्थानांतरित नहीं करते हैं, तब तक मैं अकेले एक उपकरण का तर्क दूंगा।

हम कार्यस्थल पर लिबास या फ्लाईवे का उपयोग करते हैं, जहां एप्लिकेशन टीम बदलावों को बनाने के लिए जिम्मेदार है।

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

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


4

हम अपने काम पर लिबास का उपयोग करते हैं और मैं इसके लिए अत्यधिक बोलूंगा। यह भी हमारे क्यूए उपकरण QASymphony द्वारा उपयोग किया जाता है ।

हम इसे आंतरिक रूप से MSSQL और Oracle डेटाबेस के खिलाफ उपयोग कर रहे हैं और QASymphony का उपयोग करता है / इसे पोस्टग्रेज + mysql दोनों उदाहरणों के साथ उपयोग किया है।


4

इस सवाल का जवाब देने के लिए एक मेनफ्रेम वातावरण के संदर्भ में, और DB2® डेटाबेस के लिए विशिष्ट, आमतौर पर 2 आमतौर पर उपयोग किया जाता है (सस्ता नहीं ...) से लेने के लिए विकल्प:

  • DBC के लिए ऑब्जेक्ट प्रशासन , BMC से। इसके बारे में कुछ विवरण इस प्रकार हैं (लिंक्ड पेज से उद्धरण):

    अपने डेटाबेस में वस्तुओं में बदलाव करना - या यहां तक ​​कि सिर्फ नियमित प्रशासनिक कार्य करना - कठिन, जोखिम भरा काम हो सकता है। ट्रैक रखने के लिए दर्जनों कार्य हैं, और एकल मिसस्टॉप उपलब्धता और डेटा अखंडता पर विनाशकारी प्रभाव डाल सकता है। आप DBC 11 के लिए BMC ऑब्जेक्ट एडमिनिस्ट्रेशन के साथ प्रयास और जोखिम दोनों पर कटौती कर सकते हैं, आपकी सहायता के लिए उपकरणों का एक संग्रह:

    • जटिल और डीबी 2 वातावरण को व्यवस्थित करने के लिए आवश्यक समय कम करें।
    • बेहतर अखंडता के लिए आवेदन जीवन चक्र में नियमित कार्यों को स्वचालित करें।
    • सरलीकृत DB2 कैटलॉग नेविगेशन और परिवर्तन प्रबंधन के साथ उत्पादकता में सुधार।
    • कम से कम आउटेज के साथ परिवर्तन और रखरखाव करके आवेदन की उपलब्धता बढ़ाएं।
  • आईबीएम से z / OS के लिए DB2 एडमिनिस्ट्रेशन टूल

    यह उपलब्धता के लिए कम से कम संभावित प्रभाव के साथ पूरे जीवनचक्र में DB2 ऑब्जेक्ट्स और स्कीमा को सुरक्षित रूप से प्रबंधित करने से जुड़े जटिल कार्यों को सरल बनाता है।

    • उपयोगकर्ताओं को डीबी 2 कैटलॉग को जल्दी और आसानी से नेविगेट करने की अनुमति देता है
    • सटीक SQL सिंटैक्स को जाने बिना डायनेमिक SQL स्टेटमेंट्स बनाता और निष्पादित करता है
    • निष्पादन से पहले किसी भी संभावित संघर्ष को हल करने के लिए DB2 वस्तु परिभाषाओं में किए गए परिवर्तन और ट्रैक परिवर्तन
    • डेटाबेस और तालिकाओं के खिलाफ निष्पादित करने के लिए DB2 कमांड बनाने में मदद करता है
    • उपयोगकर्ताओं को DB2 ऑब्जेक्ट बनाने, बदलने, माइग्रेट करने, छोड़ने और रिवर्स करने में सक्षम बनाता है
    • उपयोगिता नौकरियों का निर्माण और क्रियान्वयन करता है, जिससे उपयोगकर्ता उत्पादकता में वृद्धि के लिए LISTDEFs और TEMPLATEs का लाभ उठा सकते हैं

एससीएम उपकरणों के साथ एकीकरण

कुछ समय पहले मुझे एक ग्राहक द्वारा उनके SCM जीवनचक्र में BMC विकल्प को "एकीकृत" करने के लिए चुनौती दी गई थी ( SERENA ChangeMan ZMF द्वारा प्रबंधित )। इस तरह के एकीकरण के पीछे विचार " हमारी DB2 DBA- टीम (DDL के साथ सामान करना) पर विचार करें, एक विकास टीम के एक विशेष मामले के रूप में, गलती से कुछ विदेशी संपादक (BMC टूल) का उपयोग करके कोड (DDL) का उत्पादन किया जा सकता है "।

इस एकीकरण के बारे में एकमात्र (लेकिन वास्तविक !) चुनौती के बारे में "रिस्टेबिलिटी" की सुविधा भी थी, जो कि आईबीए टूल के प्रमुख लाभों में से एक है:

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

  • यदि उन चीजों में से कोई भी होता है, और आप अपने बैकअप से (आप शुरू होने से पहले) पुनः आरंभ नहीं करना चाहते हैं, तो डीबीए टूल आपको उम्मीद करता है कि (चेक-) बिंदु से फिर से शुरू होगा, जहां से चीजें गलत हो गईं (और कहां से शुरू हुईं) आप चाहते हैं कि सब कुछ फिर से निष्पादित हो)।

  • बेहतर अभी भी (या मुझे "और भी बदतर" कहना चाहिए?), अगर डीबीए टूल के लिए एक नयाबाई वास्तविक नहीं जानता है कि इस तरह के चेकपॉइंट से कैसे पुनरारंभ किया जाए, और बस फिर से (शुरुआत से) कोशिश करता है, तो डीबीए टूल बस विफल हो जाएगा उपयोगकर्ता त्रुटि के कुछ प्रकार के साथ। और यह कुछ इस तरह के संकेत के साथ है " जब तक आप मुझे यह नहीं बताते कि आप कैसे चाहते हैं कि मैं अपनी असफलता के अंतिम बिंदु के बाद आगे बढ़ूं, मैं कुछ भी करने से इनकार करता हूं (चीजों को और भी बदतर नहीं बनाने के लिए " )

  • अंत में, SCM टूल में इस रीस्टेबिलिटी को लागू करने के लिए असली सुराग, SCM टूल को भी ट्यून करने की आवश्यकता है। वास्तव में इसका उपयोग करने की अनुमति देने में विफल SCM प्रक्रियाओं को फिर से शुरू करने के लिए (आमतौर पर प्रसव से संबंधित परीक्षण / ठेस वातावरण के लिए) ... बस फिर से विफल SCM प्रक्रिया प्रस्तुत करने के बजाय (जो आमतौर पर उन SCM उपकरण ऐसी स्थितियों से पुनर्प्राप्त करते हैं। )।

बोनस: बीएमसी विकल्प के एससीएम एकीकरण के पूरा होने के बाद, ग्राहक ने अपने डीबीए टूल को आईबीएम विकल्प में बदलने का फैसला किया। और फिर भी दोनों विकल्प वास्तव में एक जैसे नहीं दिखते हैं, लेकिन एससीएम एकीकरण के लिए इसका प्रभाव कम से कम था: बस (पुन: प्रयोज्य एससीएम अनुकूलन में कुछ की जगह) आईबीएम के समकक्ष कॉल द्वारा बीएमसी विकल्प के लिए कुछ कॉल वैकल्पिक ... जो (DevOps शब्दावली का उपयोग करके) / द्वारा कार्यान्वित किया गया ।

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