2012-06-19 18 views
7

के साथ सीक्यूआरएस मैं एक अपेक्षाकृत नए वेब-आधारित एप्लिकेशन को एक स्पष्ट डोमेन मॉडल के साथ एक सीक्यूआरएस शैली प्रणाली के रूप में परिवर्तित करने के लिए देख रहा हूं। मेरा नया एप्लिकेशन अनिवार्य रूप से पुराने मौजूदा सिस्टम का एक उन्नत प्रतिस्थापन है।लीगेसी सिस्टम

मेरे संगठन में मौजूदा सिस्टम सामान्य डेटाबेस का एक सेट साझा करते हैं, जो पूरे कंपनी में सिलो में मौजूद अनुप्रयोगों की अनगिनत संख्या (कैओस विधि के माध्यम से विकसित) द्वारा अद्यतन किए जाते हैं। (जैसा कि यह खड़ा है, मेरा मानना ​​है कि कंपनी में कोई भी व्यक्ति उन्हें पहचान सकता है।)

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

मैं अब तक निम्नलिखित पर विचार किया है:

  1. पढ़ने मॉडल के लिए डेटाबेस, बस इतना ही टेबल, विरासत और नई
  2. जोड़ें पढ़ में दृश्य बनाएं मौजूदा तालिकाओं के लिए चलाता है नया पढ़ने मॉडल तालिकाओं को अद्यतन करने के
  3. पढ़ने मॉडल
  4. के लिए एक बाहर डेटासंग्रह अद्यतन करने के लिए त्याग दें आशा
डेटाबेस (CLR संग्रहीत proc/आदि [एसक्यूएल सर्वर]) के लिए कुछ कोड जोड़ें

इस पर कैसे पहुंचे इस पर आम सहमति क्या है? क्या यह सोचने की मूर्खता है कि मैं पूरी तरह से स्क्रैच से सबकुछ लिखने के बिना विरासत प्रणाली में आदेश ला सकता हूं?

उत्तर

1

मैंने सफलता के साथ विकल्प # 1 का उपयोग किया है। एक पठित मॉडल बनाने के लिए डेटा को नैतिक बनाने के लिए विचार बनाना, लेखन डेटाबेस की जटिलता के आधार पर एक व्यवहार्य विकल्प है। मतलब, यदि यह अपेक्षाकृत सीधे आगे बढ़ता है तो अधिकतर डेवलपर समझ सकते हैं तो मैं यह देखने के लिए एक नजदीकी नजर रखूंगा कि यह आपके लिए व्यवहार्य है या नहीं। मैं इन विचारों में बहुत अधिक जटिलता रखने से सावधान रहूंगा।

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

1

मैं एक बार इसी तरह की स्थिति में था, निम्नलिखित कदम था मैं कैसे यह किया:

विरासत प्रणाली में सुधार और क्लीनर कोड बेस को प्राप्त करने, कुंजी लिखने जिम्मेदारी लेने के लिए है। लेकिन बहुत महत्वाकांक्षी मत बनो क्योंकि यह इंटरफेस/अनुबंध बदल सकता है जो अंतिम तैनाती को जोखिम भरा बनाता है।

  1. यदि सभी लेखन सीधे एसक्यूएल अपडेट को छोड़कर किसी भी चीज़ के माध्यम से निकाल दिए जाते हैं, तो जितना संभव हो सके उन्हें पिछड़ा संगत रखें। उन्हें अपने नव विकसित कमांड हैंडलर के एडाप्टर/क्लाइंट के रूप में लें।

  2. कुछ लिखने में सीधे एसक्यूएल अपडेट हैं लेकिन आपके नियंत्रण से बाहर
    टीम को प्रभारी से पूछें कि क्या वे आपके नए इंटरफ़ेस/अनुबंध में बदल सकते हैं?
    यदि नहीं, तो चरण 3 देखें।

  3. पूछें कि क्या वे अंतिम स्थिरता बर्दाश्त कर सकते हैं और डेटाबेस प्रक्रियाओं के साथ SQL अद्यतनों को प्रतिस्थापित करने के इच्छुक हैं?
    यदि हां, प्रक्रियाओं में सभी एसक्यूएल अपडेट डालें और तैनाती निर्धारित करें और चरण 4 देखें।
    यदि नहीं, तो शायद आपको उन्हें अपने रिफैक्टरिंग में शामिल करना चाहिए।

  4. प्रक्रिया संशोधित करें, घटनाओं को सम्मिलित करने के साथ एसक्यूएल अपडेट को प्रतिस्थापित करें। और घटनाओं को रोल करने और उन्हें प्रकाशित करने के लिए एक बैकएंड नौकरी विकसित करें। इन आदेशों को अपने कमांड हैंडलर को आदेशों को आग लगाने के लिए अपने नए एप्लिकेशन को सब्सक्राइब करें।

  5. अपने कमांड हैंडलर से ईवेंट उत्सर्जित करना और उन तालिकाओं को अपडेट करने के लिए उनका उपयोग करें जो अन्य अनुप्रयोगों का उपभोग करने के लिए उपयोग किए जाते हैं।

  6. विरासत प्रणाली के अगले भाग में जाएं।

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