2010-05-12 10 views
5

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

उदाहरण के लिए, एक पते के लिए डेटा इकाई होगा ...

[tableName="address"] 
public class address : dataEntity 
{ 
    [column="address1"] 
    public string address1; 
    [column="city"] 
    public string city; 
} 

तो, हम डेटाबेस के लिए एक नया स्तंभ जोड़ना है, तो हम डेटाबेस का स्कीमा अद्यतन करना होगा और यह भी डेटा को अद्यतन इकाई।

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

क्या आप में से कोई भी स्मार्ट लोगों के पास कुछ सुझाव हैं?

उत्तर

3

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

ठीक है, तो वास्तविकता पर वापस। केवल स्कीमा परिवर्तनों को सीमित करने के लिए आपको केवल जोड़ों को रोकने के लिए क्या करना है। फिर आप डीबी स्कीमा को कभी भी अपडेट कर सकते हैं, और डीबी अपडेट होने के बाद केवल एक सुरक्षित समय (6am सबसे अच्छा काम करता है) तक पुन: संकलित एप्लिकेशन इंस्टॉल करें। यदि आपको चीजों को हटाना होगा, तो दूसरे तरीके से कदम उठाएं - स्कीमा को अपरिवर्तित छोड़कर नया ऐप इंस्टॉल करें, और फिर स्कीमा से बिट्स को हटा दें।

जब आप परिवर्तनों को रोल करते हैं तो आप हमेशा उच्च दबाव वाले समय के लिए जा रहे हैं, लेकिन कम से कम आप इसे समझने के लिए 2 आसान तरीके से इसे बेहतर तरीके से प्रबंधित कर सकते हैं। मौजूदा आवेदन के लिए स्कीमा को अपडेट करने के साथ आपका डीबीए ठीक रहेगा।

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

+2

मैं इस से असहमत हूं। –

+1

समाधान जैसा कि यह आपके से अलग नहीं है, केवल मैं कहता हूं कि ऐप में चलने से पहले थोड़ा सा समय के साथ डीबी में परिवर्तन होता है। संयोग से, मैं 911 कॉल सेंटर के साथ काम करता हूं, हम डाउनटाइम नहीं कर सकते हैं। हमने अपनी गलती-सहिष्णु जोड़ी को विभाजित किया, डीबी अपडेट किया, ऐप्स अपडेट किया, फिर अद्यतन सिस्टम पर चल रहे सिस्टम को विफल कर दिया।अगर हमें अपने ऐप्स को पूर्ववत करना है, तो नए डीबी स्कीमा को जगह में रखते हुए पुराने ऐप पर वापस स्विच करना बहुत आसान है। निश्चित रूप से, ओआरएम इसे तेजी से कठिन बना रहे हैं, लेकिन यह एक कार्यान्वयन मुद्दा है जिसे हमें सौदा करना है। – gbjbaanb

+0

किसी और चीज की तरह, सही नौकरी के लिए सही टूल का उपयोग करें ... 'उदाहरण' के लिए ... भारी उत्पाद पढ़ें अधिकांश ओआरएम में पेश की जाने वाली पहली और दूसरी स्तर कैशिंग सुविधाओं का उपयोग कर सकते हैं और उन डेटाबेसों पर कॉल करने से रोक सकते हैं जो कभी भी नए उत्तर नहीं देते । दूसरी तरफ, लिखने वाले भारी अनुप्रयोगों को यह पता चल सकता है कि यह डेटाबेस को ऑफलोड लिखने (विशेष रूप से जटिल वाले) को अधिक समझ में आता है। – JoeGeeky

-1

इस परिदृश्य का समर्थन करने से आपके पर्यावरण और/या प्रक्रिया और/या एप्लिकेशन में महत्वपूर्ण जटिलता बढ़ जाएगी।

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

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

संबंधित मुद्दे

 संबंधित मुद्दे