इवेंट सोर्सिंग और दृढ़ता


12

मैं इवेंट सोर्सिंग पर पढ़ रहा हूं और दृढ़ता के संबंध में एक प्रश्न है।

मैं अभी भी सभी संस्थाओं के साथ एक डीबी रख सकता हूं, है ना? या स्मृति में प्रत्येक इकाई के नवीनतम संस्करण को प्राप्त करने के लिए हर बार आवेदन शुरू होने पर घटनाओं को फिर से खेलना चाहिए? बड़े सिस्टम पर कचरे की तरह लगता है (डेटा की बड़ी मात्रा में)?

इवेंट सोर्सिंग के साथ मुद्दा यह है कि यदि आवश्यक हो तो मैं डेटा स्टोर को आबाद करने के लिए घटनाओं को फिर से कर सकता हूं? (या डेटा का विश्लेषण)

जवाबों:


9

जब आप अपने सिस्टम आर्किटेक्चर को भी बदलने का निर्णय लेते हैं, तो आपको इवेंट सोर्सिंग से सबसे अधिक फायदा होगा। DDD के साथ मिलकर एक CQRS स्टाइल आर्किटेक्चर की ओर जाने से कम से कम मेरी राय में, इवेंट सोर्सिंग का सही लाभ सामने आएगा।

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

बहुत सारे शानदार इवेंट स्टोर हैं, पिछले एक को कल इवेंट स्टोर में रिलीज़ किया गया था और यह वास्तव में अच्छा लगता है।

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

मैंने एक विस्तृत लेख लिखा कि क्या लाभ हैं और एक CQRS आर्किटेक्चर घटना सोर्सिंग के साथ संयुक्त रूप से कैसा दिखता है। आप इसे CQRS, डोमेन इवेंट्स और DDD रिव्यू देख सकते हैं


1
मुझे CQRS और DDD के बारे में सब पता है। मैं इवेंट सोर्सिंग के लाभों को समझता हूं। स्नैपशॉट प्रक्रिया को गति देने का एक शानदार तरीका है। हालांकि यह सवाल का हिस्सा नहीं है। लेकिन सवाल यह था कि एक बार लोड होने के बाद सभी मॉडल / इकाइयां कहां संग्रहीत होंगी। मेमोरी में (बड़े सिस्टम पर A LOT मेमोरी की आवश्यकता होगी) या DB में? सबसे अच्छा अभ्यास क्या है?
जौगफिन

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

9

इवेंट सोर्सिंग के साथ मुख्य प्रश्न "रिकॉर्ड की आपकी पुस्तक क्या है"।

अगर आपकी बुक ऑफ रिकॉर्ड आपकी इवेंट स्ट्रीम है तो आपको कोई समस्या नहीं होगी। यदि आपकी रिकॉर्ड ऑफ बुक आपका "इकाई मॉडल" है, तो सभी जगह समस्याएं शुरू हो जाएंगी। इसका एक हिस्सा यह है कि आप कह सकते हैं "यदि मैंने अपना इकाई मॉडल खो दिया है तो क्या मैं इसे अपने इवेंट स्ट्रीम से पुनर्निर्माण कर सकता हूं"। यदि आप इस प्रश्न पर सकारात्मक हैं तो आपका ईवेंट लॉग आपके रिकॉर्ड की पुस्तक है।

यह भी याद रखना महत्वपूर्ण है कि इवेंट सोर्सिंग का उपयोग करने वाले अधिकांश लोग एक रीड मॉडल का उपयोग करते हैं। इस मॉडल का उपयोग डेटा को क्वेरी करने के लिए किया जाता है। हालांकि यह 3nf निकाय मॉडल की तुलना में 1nf मॉडल जैसा कुछ दिखने की अधिक संभावना है। वे केवल ईवेंट्स की स्थिति को वापस लेने के लिए ईवेंट की पुनरावृत्ति करते हैं यह निर्धारित करने के लिए कि क्या लिखने की अनुमति दी जानी चाहिए।


हाय ग्रेग, मैं इवेंट सोर्सिंग में नया हूँ, लेकिन मैं वास्तव में इस में महारत हासिल करना चाहता हूं, क्या आप व्यावहारिक उदाहरणों और स्पष्टीकरणों के लिए कुछ संसाधनों का सुझाव दे सकते हैं, मैंने CQRS, ES के बारे में बहुत कुछ देखा और पढ़ा है, लेकिन जब मैं एक प्रोटोटाइप शुरू करना चाहता हूं इसका उपयोग करके मैं वास्तव में यह पता नहीं लगा सकता कि कब क्या है :) मुझे आशा है कि आप मेरे लिए कुछ सुझाव दे सकते हैं (मैं जावा पक्ष पर)। आपके समय के लिए धन्यवाद।
वच

1

मैं अभी भी सभी संस्थाओं के साथ एक डीबी रख सकता हूं, है ना? या स्मृति में प्रत्येक इकाई के नवीनतम संस्करण को प्राप्त करने के लिए हर बार आवेदन शुरू होने पर घटनाओं को फिर से खेलना चाहिए?

उत्तर आपके आवेदन की आवश्यकताओं पर निर्भर करता है। मैंने इसे दोनों तरीकों से देखा है।

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

डेटा और / या सिस्टम के बड़े संस्करणों के साथ सिस्टम में जो क्वेरी साइड को लागू करने के लिए RDBMS कार्यक्षमता पर निर्भर करते हैं, आपके पास इवेंट-सोर्स किए गए डेटा के "वर्तमान दृश्य" के लिए एक डेटाबेस है (आप ऐसे कई विचार भी कर सकते हैं)। इस दृष्टिकोण का लाभ यह है कि यह आपको परिचित प्रौद्योगिकियों का उपयोग करके क्वेरी पक्ष बनाने देता है।


कौन सा लेखांकन पैकेज ऐसा करता है?
मैगज़

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.