2009-06-26 11 views
6

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

बैकएंड सिस्टम में स्रोत डेटा भारी सामान्यीकृत है, दर्जनों टेबल और विदेशी कुंजी बाधाओं के साथ। यह एक अच्छी तरह से डिजाइन ओएलटीपी आरडीबीएमएस प्रणाली है। प्रश्न में कई तालिकाओं में लाखों पंक्तियां हैं। इस डेटा को नियमित रूप से अन्य डेटाबेस में धक्का देना है। जितनी बार व्यवहार्य हो; विलंबता सहन की जा सकती है। सबसे ऊपर, बैकएंड और रिमोट डेटाबेस दोनों का अधिकतम अपटाइम अनिवार्य है।

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

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

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

उत्तर

7

बेहतर serverfault.com पर पूछना (मैं टिप्पणी पोस्ट नहीं कर सकते, लिपियों अतः में टूट रहे हैं, तो मैं एक पूरा जवाब पोस्ट करने के लिए किया है)

अपडेट: (सफारी का प्रयोग किया, स्क्रिप्ट फिर से काम करते हैं, मैं यह कर सकते हैं ठीक से पोस्ट करें)

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

  • परिवर्तनों को धक्का देने के लिए उपयोग की जाने वाली तकनीक आदिम, धीमी और अविश्वसनीय है।इसके लिए प्रतिलिपि शुरू करने के लिए फ़ाइल शेयरों की आवश्यकता होती है और यह वास्तव में डेटा को दोहराने के लिए टी-एसक्यूएल पर निर्भर करता है, जिसके परिणामस्वरूप स्केलेबिलिटी समस्याएं होती हैं: प्रतिकृति थ्रेड सर्वर वर्कर थ्रेड का उपयोग करते हैं और तथ्य यह है कि वे मनमानी तालिकाओं और अनुप्रयोग क्वेरी के साथ बातचीत करते हैं जिससे अवरुद्ध हो जाता है और deadlocks। मैंने जो सबसे बड़ी तैनाती सुना है, वह लगभग 400-500 साइटें हैं और सुपरहमान एमवीपी और शीर्ष डॉलर सलाहकारों द्वारा की जाती हैं। यह अपने ट्रैक पर कई परियोजनाओं को रोकता है जो 1500 साइटों पर शुरू करते हैं (सबसे बड़ी तैनाती प्रतिकृति परियोजनाओं से परे)। मुझे यह जानकर उत्सुकता है कि क्या मैं गलत हूं और आप 500 से अधिक साइटों के साथ तैनात SQL सर्वर प्रतिकृति समाधान के बारे में जानते हैं।
  • प्रतिकृति रूपक बहुत डेटा केंद्रित है। यह वितरित अनुप्रयोगों की आवश्यकताओं को ध्यान में रखता नहीं है: संस्करण और औपचारिक अनुबंधों की आवश्यकता, डेटा 'fiefdoms' की स्वायत्तता, उपलब्धता और सुरक्षा पीओवी से ढीला युग्मन। नतीजतन प्रतिकृति आधारित समाधान 'डेटा उपलब्ध कराने' की तत्काल आवश्यकता को हल करता है, लेकिन 'मेरे ऐप से बात करने की ज़रूरत है' की वास्तविक समस्या को हल करने में विफल रहता है।

स्पेक्ट्रम के दूसरे छोर पर आपको ऐसे समाधान मिलेंगे जो वास्तव में क्यूड्यूड मैसेजिंग के आधार पर सेवाओं की तरह समस्या का समाधान करते हैं। लेकिन या तो संचार तंत्र (वेब ​​सेवाओं और एमएसएमक) को अलग करने और डेटा स्टोरेज (कॉम और डीबी के बीच डीटीसी लेनदेन, कोई आम उच्च उपलब्धता की कहानी, कोई सामान्य वसूली योग्यता आदि इत्यादि) में अलग-अलग समस्याओं के साथ दर्दनाक रूप से धीमी और परेशान नहीं हैं। समाधान जो blazingly fast and fully integrated with DB exists in the MS stack हैं, लेकिन कोई भी नहीं जानता कि उनका उपयोग कैसे करें। इन और प्रतिकृति के बीच कहीं आप ओसीएस/सिंच फ्रेमवर्क और एसएसआईएस आधारित कस्टम समाधान जैसे विभिन्न मध्यवर्ती समाधान पाएंगे। कोई भी प्रतिकृति की स्थापना और निगरानी की आसानी प्रदान नहीं करेगा, लेकिन वे स्केल और बेहतर प्रदर्शन कर सकते हैं।

मैं कई परियोजनाओं में शामिल था जिसमें बहुत बड़े पैमाने पर 'डेटा सिंक्रनाइज़ेशन' की आवश्यकता थी (+1200 साइट्स, +1600 साइट्स) और मेरा समाधान समस्या को 'एप्लिकेशन संचार' समस्या पर बदलना था। एक बार जब मानसिकता बदल जाती है और डेटा प्रवाह अब 'तालिका वाई के कुंजी एक्स के साथ रिकॉर्ड' के रूप में नहीं देखा जाता है, बल्कि इसके बजाय 'ग्राहक वाई द्वारा आइटम एक्स की खरीद को संप्रेषित करने वाला संदेश' समाधान को समझने और लागू करने में आसान हो जाता है। अब आप एक्स-वाई-जेड के क्रम में सम्मिलित रिकॉर्ड्स के संदर्भ में नहीं सोचते हैं, इसलिए एफके रिश्ते तोड़ते नहीं हैं बल्कि इसके बजाय 'संदेश XYZ द्वारा वर्णित प्रक्रिया खरीद' के संदर्भ में।

मेरे दृश्य प्रतिकृति में, और यह डेरिवेटिव (यानी डेटा ट्रैकिंग और डेटा-ग्राम शिपिंग), '80 प्रौद्योगिकियों में लगी हुई समाधान और डेटा/अनुप्रयोगों के दृश्य हैं। अप्रचलित डायनासोर (और पक्षियों में किसी भी तरह से मोड़ नहीं)।

मैं जानता हूँ कि यह भी अपने सभी (बहुत कानूनी) चिंताओं को दूर करने के लिए शुरू नहीं करता है, लेकिन बाहर लिख सब मैं कहना है/शेख़ी/इस विषय पर rable किताबचा की मात्रा को पूर्ण ...

+0

धन्यवाद, लेकिन मैं इसे डेटाबेस डेवलपर के दृष्टिकोण से देख रहा हूं, सर्वर प्रशासक नहीं। यह एक अपफ्रंट सॉफ्टवेयर डिज़ाइन दृष्टिकोण से महत्वपूर्ण है, न केवल एक परिचालन मामला। –

+0

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

+0

आप प्रतिकृति का वर्णन कर रहे हैं। यदि यह आपकी जरूरतों के अनुरूप है, तो इसके सभी गोथकाओं के साथ, इसे पुन: पेश करने पर पसीना न पड़े। 'आउट ऑफ़ द बॉक्स' प्रतिकृति में पहले से ही अनुभव और फीडबैक पहले से जमा हो चुके हैं। आपके द्वारा देखे गए गठजोड़ हैं * बाएं * क्या कई और समस्याओं को ठीक करने के बाद, और आपको बस उन सभी को दूर करना होगा। –

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