2012-02-07 22 views
27

का उपयोग कब करें मुझे पूरा यकीन नहीं है कि मुझे समझ में आया कि इवेंटस्टोर क्या है, मैंने इसे डोमेनोबजेक्ट्स के लिए "ट्रांज़ेक्शन लॉग" के रूप में सोचा था। इसके फायदे/नुकसान क्या हैं और इसका उपयोग करने के लिए अच्छे परिदृश्य क्या हैं और इसका उपयोग कब नहीं किया जाना चाहिए?इवेंटस्टोर

संपादित करें:

जब से मैं बहुत ज्यादा मांग रहा है, मैं खुशी होगी अगर वहाँ एक "सरल" परिदृश्य जब एक eventstore और जब नहीं उपयोग करने के लिए हो सकता है? दूसरे शब्दों में: क्या कुछ वाक्यों में 2 परिदृश्यों का वर्णन करना संभव है या क्या मुझे इसे समझने के लिए 5 पुस्तकें पढ़ने की आवश्यकता है?

उत्तर

42

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

मैं क्रेग के साथ सहमत हैं कि यह संक्षेप आपके सवाल का जवाब देना मुश्किल है क्योंकि यह बहुत संदर्भ पर निर्भर है, लेकिन यहाँ आप क्यों एक घटना की दुकान में विचार कर सकते कारणों की एक छोटी सूची है:

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

दूसरी ओर, वहाँ कुछ अच्छे कारणों से ऐसा करने नहीं हैं:

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

आपके उत्तर के लिए धन्यवाद, क्योंकि यह वही था जो मुझे चाहिए (कुछ घटनाओं के उपयोग के लिए/कुछ "सरल" उदाहरण)। –

18

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

ग्रेग यंग: एक ~ 2 घंटे का वीडियो here है जो आपके प्रश्न में पूछे जाने वाले सभी चीज़ों का एक शानदार अवलोकन प्रदान करता है। एक ~ 6 घंटे ऑनलाइन कक्षा here भी है।

उडी दहन: 1 घंटे का वीडियो here है जो इन तकनीकों का उपयोग करने पर परिप्रेक्ष्य देता है।

मेलिंग सूची: एक समूह here है जहां आप अपने सभी प्रश्न पूछ सकते हैं और विषय के चारों ओर एक अच्छी चर्चा कर सकते हैं।

आशा है कि यह सहायक होगा। आपके प्रश्न में इतना भरा हुआ है कि मुझे नहीं लगता कि यह संभवत: आप या किसी और को किसी छोटे से काम करने और लोगों को गुमराह करने में इसका उत्तर देने के लिए अच्छा होगा।


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

+0

आपके उत्तर के लिए धन्यवाद, लिंक मदद की (हालांकि मुझे लगता है कि मैं उनमें से अधिकतर जानता हूं)। जवाब में बस अपना अपडेट देखा - इससे और मदद मिली। आपके उत्तर को ऊपर उठाया लेकिन मुझे लगता है कि एरिक ली का जवाब मेरे प्रश्न को बेहतर तरीके से फिट करता है। –