2012-01-09 10 views
12

मेरी कंपनी ने एक और कंपनी खरीदी जब मुझे सिस्टम की विरासत मिली। यह प्रणाली लैंप और .NET का मिश्रण है।डेटा के बहुत सारे डेटा के साथ हमारे वर्तमान सिस्टम में बुरी प्रणाली को माइग्रेट करना

  1. 1 विंडोज सर्वर चल रहा asp.net कि एपीआई और वेब सेवा के लिए ही प्रयोग किया जाता तीसरे पक्ष के सत्यापन को नियंत्रित करता है -
  2. 8 दीप सर्वर (वेब, रिपोर्ट, क्रॉन, खजाने आदि (इसे जीतने के कॉल) ...) - (का यह नया कॉल)

हमारे वर्तमान वातावरण:

14 दीप सर्वर (वेब, मेल, खजाने, आदि ...) - (यह वर्तमान कॉल)

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

अब बुरी खबर। नया सिस्टम डेटाबेस स्कीमा बिल्कुल अच्छा नहीं है। यह सामान्य नहीं है और प्रश्न धीमे हैं (डेटाबेस प्रश्न और कोड भी)। मेरा पहला विचार उन्हें एक सामान्यीकृत संरचना में फिर से डिजाइन करना है जो वर्तमान कोड से मेल खाता है लेकिन मैं काम नहीं करता हूं। नई प्रणाली से टेबल विशाल हैं। नई प्रणाली में 7 डेटाबेस हैं, 10000 से अधिक टेबल, सबसे छोटी टेबलों में 100k पंक्तियां हैं और कुछ तालिकाओं में 500 मिलियन से अधिक पंक्तियां हैं। डेटाबेस में से एक में 25 मिलियन से अधिक पंक्तियों वाली अधिकांश तालिकाएं हैं।

क्या यह माइग्रेट करना सुरक्षित है या क्या मुझे दोनों चलाना चाहिए? अगर मुझे माइग्रेट करना चाहिए तो मैं जानना चाहता हूं कि विंडोज़ और न्यू सिस्टम माइग्रेट करने के लिए मेरे वर्तमान सिस्टम में माइग्रेट करने के लिए मेरे लिए सबसे सुरक्षित समाधान क्या होगा?

उत्तर

29

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

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

सकारात्मक:

  • केवल एक प्रणाली को बनाए रखने के लिए: यदि आप 3 सिस्टम बनाए रखने के लिए नहीं करना चाहते हैं;
  • एक कोड/डेटाबेस वातावरण: PHP बनाम एएसपी.नेट और एमएसएसक्यूएल बनाम MySQL;
  • केंद्रीकृत कोड/डेटाबेस;
  • एक कोडिंग (कोड और डेटाबेस) मानक;
  • बचाने/equiments बेचने (यदि आप अपने 14 सर्वरों के लिए कोड विस्थापित करेगा हो सकता है आप अन्य 9 (विन + नया जरूरत नहीं है), तो आप को बेचने या उन्हें अगले परियोजनाओं के लिए रख सकते हैं)

विपक्ष:

  • उच्च जोखिम (दुर्घटना, असंगति, अज्ञात सुविधा आपको समझने के लिए आदि .. की जरूरत है);
  • पलायन या सब कुछ फिर से डिजाइन करने की तुलना में सस्ता
  • असफलता के जोखिम प्रवास की तुलना में कम है (क्योंकि आप पहले से ही दोनों प्रणाली पता काम करता है) है
  • नियोजन, नियंत्रण, कार्यान्वयन, गुणवत्ता आश्वासन: बहुत बुरा करता है, तो इनमें से किसी एक असफल;
  • महंगा: माइग्रेटिंग समय और धन में महंगा हो सकती है;

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

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

अब, मैं सुझाव दे सकता हूं कि Parallel Adoption से शुरू करें। इस तरह आप सुनिश्चित करते हैं कि सभी सिस्टम ठीक से काम कर रहे हैं और स्वस्थ हैं। फिर धीरे-धीरे डेटा सिस्टम/कोड को तब तक माइग्रेट करें जब तक कि सबकुछ पूरा न हो जाए। यह आसान नहीं होगा और आपको यह पहचानना होगा कि आपको पहले माइग्रेट करने वाले नए + WIN सिस्टम का कौन सा हिस्सा है। मेरी सिफारिश WIN प्रणाली माइग्रेट करने के लिए होगी। चूंकि यह वर्तमान और नई प्रणालियों से स्वतंत्र है, जब तक आप एक ही आउटपुट प्रदर्शित करते हैं तो आपको ठीक होना चाहिए। PHP में ओपन सोर्स या इसी तरह के सत्यापन के लिए खोजें या यदि आप कोई नहीं ढूंढ पा रहे हैं, तो उन्हें बनाएं।इस तरह यह WIN प्रणाली आसानी से आपके वर्तमान संगठन संरचना और कोडिंग मानकों में माइग्रेट की जा सकती है। परीक्षण और गुणवत्ता आश्वासन करना आसान होगा और आप बहुत जल्दी पूरा हो सकते हैं।

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

मैं इस मामले के लिए big bang adoption की अनुशंसा नहीं करूंगा।

2

मुझे माइग्रेट करना चाहिए वास्तव में आपका निर्णय नहीं है, लेकिन आप मालिकों के निर्णय हैं।

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

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

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

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

गुड लक

+1

अच्छी तरह से मैं मालिक – aki

+0

डर्न हूं, तो आपको बस लेने का एक कठिन निर्णय मिला है;) –

+0

yup! मुझे पता है, यही कारण है कि मैं यहां पूछना चाहता था लेकिन मुझे लगता है कि लोगों को इस तरह के प्रश्न पसंद नहीं हैं ... – aki

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