हमारे पास बहुत बड़े पैमाने पर उद्यम स्तर डेटाबेस है। हमारे व्यवसाय मॉडल के हिस्से के रूप में सभी वेब उपयोगकर्ता हमारे वेब सर्वर पर हर महीने एक ही समय में हिट करते हैं जो हमारे एसक्यूएल बॉक्स को हथौड़ा करते हैं। ट्रैफ़िक बहुत भारी है और कंपनी जितनी बड़ी होती है, उतनी ही भारी होती जाती है। sql प्रोक ऑप्टिमाइज़ेशन का प्रदर्शन किया गया है और हार्डवेयर को पहले ही बहुत ऊंचे स्तर पर पहुंचा दिया गया है।
हम यह सुनिश्चित करने के लिए डेटाबेस को तेज करना चाह रहे हैं कि हम कंपनी के विकास और भविष्य के भार को संभाल सकें।
हमने तय किया है कि किस विशेष डेटा को तेज किया जाना चाहिए। यह हमारे डेटाबेस का एक सबसेट है जो अत्यधिक उपयोग किया जाता है।
हालाँकि, मेरा प्रश्न गैर-शार्प डेटा के बारे में है जो सामान्य / सार्वभौमिक है। इस तरह के डेटा का एक उदाहरण उदाहरण के लिए एक इन्वेंटरी टेबल या संभवतः एक कर्मचारी तालिका, उपयोगकर्ता तालिका आदि हो सकता है।
मुझे इस सामान्य / सार्वभौमिक डेटा को संभालने के लिए दो विकल्प दिखाई देते हैं:
1) डिजाइन 1 - एक बाहरी डेटाबेस में आम / सार्वभौमिक डेटा रखें। सब लिखेंगे यहां। इस डेटा को फिर प्रत्येक शार्प पर दोहराया जाएगा जिससे प्रत्येक शार्द इस डेटा को पढ़ सकेगा और t-sqm procs में इस डेटा से आंतरिक रूप से जुड़ सकता है।
2) डिजाइन 2 - प्रत्येक शार्क को सभी सामान्य / सार्वभौमिक डेटा की अपनी प्रति दें। प्रत्येक शार्प को इन तालिकाओं पर स्थानीय रूप से लिखने दें और अन्य सभी शार्क पर इस डेटा को अपडेट / सिंक करने के लिए sql मर्ज प्रतिकृति का उपयोग करें।
डिजाइन के बारे में चिंता # 1
1) लेन-देन के मुद्दे: यदि आपके पास ऐसी स्थिति है जिसमें आपको एक शार्क में डेटा लिखना या अपडेट करना होगा और फिर उदाहरण के लिए 1 संग्रहीत खरीद में एक आम / सार्वभौमिक तालिका को लिखना / अपडेट करना होगा, तो आप अब आसानी से ऐसा नहीं कर पाएंगे। डेटा अब अलग sql उदाहरणों और डेटाबेस पर मौजूद है। आपको यह देखने के लिए MS DTS को शामिल करने की आवश्यकता हो सकती है कि क्या आप इन राइट्स को ट्रांजेक्शन में लपेट सकते हैं क्योंकि वे एक अलग डेटाबेस में हैं। प्रदर्शन यहाँ एक चिंता का विषय है और संभव है कि फिर से लिखना शार्प और आम डेटा लिखने वाले प्रॉक्स के लिए शामिल हो सकता है।
2) संदर्भात्मक अखंडता का नुकसान। क्रॉस डेटाबेस संदर्भात्मक अखंडता करना संभव नहीं है।
3) सिस्टम के बड़े क्षेत्रों को रीकोड करना ताकि यह नए सार्वभौमिक डेटाबेस के लिए आम डेटा लिखना जानता है लेकिन शार्क से आम डेटा पढ़ता है।
4)। डेटाबेस यात्रा में वृद्धि हुई। ऊपर # 1 की तरह, जब आप ऐसी स्थिति में भाग लेते हैं जिसमें आपको शार्प्ड डेटा और सामान्य डेटा को अपडेट करना होगा जिसे पूरा करने के लिए आप कई राउंड ट्रिप करने जा रहे हैं क्योंकि डेटा अब अलग डेटाबेस में है। कुछ नेटवर्क विलंबता यहाँ है, लेकिन मैं इस मुद्दे के बारे में उतना चिंतित नहीं हूँ जितना कि उपरोक्त 3।
डिजाइन के बारे में चिंता # 2
डिजाइन # 2 में प्रत्येक शार्क को सभी सामान्य / सार्वभौमिक डेटा का अपना उदाहरण मिलता है। इसका मतलब यह है कि सभी कोड जो सामान्य डेटा से जुड़ते हैं या अपडेट करते हैं, वह आज भी उसी तरह काम / चलाने के लिए जारी है। विकास टीम से बहुत कम पुनरावर्ती / पुनर्लेखन की आवश्यकता है। हालांकि, यह डिज़ाइन पूरी तरह से सभी शार्क के डेटा को सिंक में रखने के लिए मर्ज प्रतिकृति पर निर्भर करता है। dbas अत्यधिक कुशल हैं और बहुत चिंतित हैं कि मर्ज प्रतिकृति इसे संभालने में सक्षम नहीं हो सकती है और प्रतिकृति विफलता को मर्ज करना चाहिए, इस विफलता से पुनर्प्राप्ति महान नहीं है और हमें बहुत नकारात्मक रूप से प्रभावित कर सकती है।
मुझे यह जानने की उत्सुकता है कि क्या कोई # 2 विकल्प के साथ गया है। मैं यह जानने के लिए उत्सुक हूं कि क्या मैं एक 3 या 4 वें डिज़ाइन विकल्प को देख रहा हूं जो मुझे दिखाई नहीं देता है।
पहले ही, आपका बहुत धन्यवाद।