2012-06-29 13 views
14

पृष्ठभूमि:प्रकाशित/SQL में पैटर्न सदस्यता लें

हम आइटम जो दिन (औसत 300K दैनिक परिवर्तन) भर में अपडेट किया जाता है की एक बड़ी (15+ मिलियन) तालिका है। लंबित परिवर्तन एक स्टेजिंग टेबल में संग्रहीत होते हैं, और इस तालिका से परिवर्तन पढ़ने, अपडेट करने और संसाधित होने वाले परिवर्तनों को चिह्नित करने के लिए पूरे दिन नौकरी चलती है।

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

मेरे प्रश्न:

हम सेवा ब्रोकर का उपयोग कर एक प्रकाशक/ग्राहक पैटर्न को लागू करने पर विचार कर रहे हैं। लक्ष्य तब होता है जब कोई आइटम बदलता है, जो कई अन्य सिस्टम (जैसे हमारे ईबे एप्लिकेशन) की सदस्यता ले सकते हैं। यह हमें बड़े और कम अपडेट के बजाय वास्तविक समय के करीब और अधिक बारीक अद्यतन करने में सक्षम बनाता है, जिसमें सभी डेटा पूछताछ शामिल है, न कि जो कुछ भी बदल गया है। हालांकि, Google का उपयोग करने के बाद ऐसा लगता है कि यह एक सामान्य डेटाबेस पैटर्न नहीं है, और यह लाल झंडे उठाता है। क्या यह सेवा ब्रोकर का वैध उपयोग नहीं है (हालांकि मुझे पब/सब करने पर प्रो एसक्यूएल सर्वर 2008 सेवा ब्रोकर में एक छोटा सा अनुभाग मिला है? यह समस्या सामान्य रूप से हल कैसे होती है? यह एक आम पर्याप्त समस्या की तरह लगता है।

टी एल; डॉ:

लक्ष्य: अद्यतन एक गतिशील, शिथिल युग्मित तरह से जब एक आइटम बदलने में विभिन्न प्रणालियों।

प्रश्न: क्या सेवा ब्रोकर के साथ एक पब/सब स्टाइल समाधान एक उच्च मात्रा सेटिंग में व्यवहार्य समाधान है?

+0

दो प्रश्न: स्टेजिंग तालिका में लंबित परिवर्तनों को संसाधित करने के बजाय उन अनुप्रयोगों का मुख्य आइटम तालिका में डेटा का उपयोग क्यों किया जाता है? दूसरा: क्या आपको वस्तुओं को पकड़ने और प्रकाशित करने के लिए बिल्कुल SQL सर्वर की आवश्यकता है? –

+1

अंतर्निहित एसक्यूएल प्रतिकृति पर एक नज़र डालें, यह परिदृश्यों की एक विस्तृत श्रृंखला को समायोजित करने के लिए पर्याप्त लचीला है। – alexm

+0

@ क्यूबावायरोस्टेक जो हमारा पहला विचार था, और हमें संदेश-आधारित दृष्टिकोण पर विचार करने के लिए प्रेरित किया। उस तालिका से हर बार पढ़ने के बजाय, इसे 'आइटम बदले' संदेशों के स्रोत के रूप में क्यों न उपयोग करें। शायद अमूर्तता की एक अनावश्यक परत, लेकिन स्टेजिंग तालिका समय-समय पर संसाधित अद्यतनों से मिटा दी जाती है, सोशल एसक्यूएल से वस्तुओं को स्थानांतरित करने के लिए सबसे सुरक्षित और सबसे लचीला सेवा ब्रोकर – Bort

उत्तर

0

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

सेवा ब्रोकर talks about how Service Broker handles the challenges that most companies turn to NoSQL solutions for.

के डेवलपर्स में से एक यह मेरी समझ है कि सेवा ब्रोकर आप के लिए क्या चाहिए, तो ऐसा करने के लिए है है। यह External Activation से run custom applications when the data has changed का भी उपयोग कर सकते हैं।

+0

सहजता से बोलते हुए: सेवा ब्रोकर इस अपेक्षाकृत सरल समस्या के लिए एक ओवरहेम्पैम्प, क्लस्टर्ड इंडेक्स में बदलावों की तुलना में काफी अधिक समस्या प्रदान करेगा। यहां तक ​​कि एक तरफा प्रतिकृति (जैसा कि एलेक्स सुझाव दिया गया है) एक बेहतर समाधान प्रतीत होता है। अधिक सार्वभौमिक उपकरण, बड़ा प्रदर्शन जुर्माना IMHO। –

2

यह बहुत आम एकीकरण पैटर्न है।

मैं एसक्यूएल सर्वर सेवा ब्रोकर से परिचित नहीं हूँ, लेकिन अगर आप किसी भी एकीकरण मिडलवेयर ढेर पर देखने के - TIBCO, ओरेकल, webMethods, खच्चर, Informatica आदि - वे सभी एक "डेटाबेस एडाप्टर" जो काम आप का वर्णन करता है प्रदान करते हैं।

सामान्य पैटर्न यह है कि डेटाबेस में अद्यतन संदेश प्रकाशन को ट्रिगर करते हैं। यह डेटाबेस तालिका में या एडाप्टर के माध्यम से नए अपडेट के लिए तालिका "मतदान" के माध्यम से किया जाता है। किसी भी विधि में पेशेवर और विपक्ष है।

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

0

आमतौर पर इस तरह की समस्याएं डेटाबेस केंद्रित पब/उप कार्यान्वयन प्रदान करने के मुकाबले बड़ी (दायरे में) हो रही हैं। मैं एक सिफारिश कर सकते हैं, तो एक पूर्ण पैमाने सेवा बस का उपयोग करें:

nServiceBus (एक निश्चित आकार के लिए खाली करें, बहुत सस्ते अतीत कि)

आप एक ठोस पब/उप ढांचे मिलता है, लेकिन करने के लिए आसान साथ काम करें और ग्राहकों, लेखों और नमूने का एक बड़ा उपयोगकर्ता आधार है।

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