5

मैं दृष्टिकोण इवेंट सोर्सिंग/डीडीडी/सीक्यूआरएस के साथ डिजाइन किए गए आवेदन में पूछताछ पर पोस्ट देख रहा था।डीडीडी/सीक्यूआरएस क्वेरीिंग घटनाक्रम

जैसा कि मैं समझता हूं कि ईवेंट किसी डोमेन ऑब्जेक्ट की स्थिति में परिवर्तन होते हैं। राज्य में परिवर्तन डीबी (इतिहास में से कोई भी/एसक्यूएल) में इतिहास/घटनाओं के रूप में बनाए रखा जाएगा।

यदि उपयोगकर्ता किसी विशेष समग्र रूट के लिए वर्तमान स्थिति प्राप्त करने के लिए क्वेरी करना चाहता है, तो इसमें ईवेंट के इतिहास को शामिल करना शामिल होगा।

जब उपयोगकर्ता विशेष रूप से व्यावसायिक विशिष्ट प्रश्न पूछेगा तो वह वर्तमान स्थिति में रुचि रखेगा, घटनाओं का इतिहास नहीं।

सीक्यूआरएस में पूछताछ या 'क्यू' भाग घटना सोर्सिंग के साथ कैसे काम करता है?

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

विचार करें कि उपयोगकर्ता को खाते की वर्तमान शेष राशि प्राप्त करने की आवश्यकता है, घटनाओं के इतिहास की धारा कैसे सुइट होगी? उपयोगकर्ता को दिए गए खाते के लिए वर्तमान शेष राशि कैसे प्राप्त होगी?

मैं समझने में असमर्थ हूं, घटनाओं के व्यापार विशिष्ट पूछताछ इतिहास के लिए कैसे उपयोगी होगा?

-Prakhyat एम एम

उत्तर

4

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

मैं सीक्यूआरएस अवधारणा जैसे this one या this one पर आगे पढ़ने का सुझाव देता हूं।

+0

अलेक्जेंडर, उत्तर के लिए धन्यवाद। मुझे लापता संदर्भ मिला। अनुमान वास्तव में कुशल हैं। – Prakhyat

+0

अलेक्जेंडर, मैं अपने ऐप के लिए अक्का दृढ़ता का उपयोग कर रहा हूं। मैंने डीडीडी/सीक्यूआरएस दृष्टिकोण लिया है। मुझे लिखने की तरफ कोई समस्या नहीं है। मुझे लगता है कि मुझे क्वेरी पक्ष बनाने में पर्याप्त समझ नहीं है। पूछताछ के मामले में एकाधिक समग्र जड़ों से डेटा की आवश्यकता होगी? – Prakhyat

+0

क्षमा करें, मुझे अक्का दृढ़ता से कोई अनुभव नहीं है; आपके अनुमान कई समग्र जड़ों (यहां तक ​​कि विभिन्न प्रकार के भी) सुन सकते हैं। –

4

मैं आपको ग्रेग यंग (वह सीक्यूआरएस और इवेंट सोर्सिंग के पिता की तरह है) से अधिक लेख पढ़ने की सलाह देगा, इस तरह: CQRS, Task Based UIs, Event Sourcing... agh

मेरी खराब अंग्रेजी के लिए खेद है, मैं पराग्वे से हूं। लेकिन मुझे वास्तव में डीडीडी - सीक्यूआरएस - ईएस पसंद है और मैं एक बिंदु बनाने की कोशिश करना चाहता हूं।

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

ऐसा लगता है कि आप जावा लड़के हैं, लेकिन फिर भी, आप CQRS Journey from Microsoft देख सकते हैं। उम्मीद है कि यह थोड़ा सा मदद करता है और आपको डीडीडी/सीक्यूआरएस/ईएस, बिजनेस एप्लीकेशनों की लाइन के नए तीनों पर अधिक शोध करने के लिए प्रेरित करता है।

2

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

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

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

यह दृष्टिकोण आपको डोमेन को महत्वपूर्ण रूप से स्थिर करने देता है, आपको सिस्टम के काम के बारे में अधिक जानकारी मिलती है, घटनाओं को ट्यून करें और सिस्टम में "उचित" पढ़ने वाले मॉडल को लाने के लिए वास्तव में तैयार रहें, लेकिन आपको ऐसा नहीं करना पड़ेगा।

एडम डिमिट्रुक ने blog post about it लिखा है, तो आप इसे पढ़ने के लायक भी हो सकते हैं भले ही आप इस दृष्टिकोण को नहीं लेना चाहते हैं। ग्रेग यंग ने 2012 में वापस EventStore as read model पर एक वार्ता भी दी।

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