2016-07-28 12 views
5

का उपयोग करते समय ईवेंट संग्रहीत करना मैं घटना सोर्सिंग के बारे में पढ़ रहा हूं और हालांकि मुझे कई समस्याओं के लिए यह एक बहुत ही प्राकृतिक दृष्टिकोण मिला है, मुझे समझ में नहीं आया कि अभ्यास में घटनाओं को कैसे स्टोर किया जाए।इवेंट सोर्सिंग

इंटरनेट पर थोड़ा सा खोज कर मुझे this article वॉन वर्नॉन द्वारा डीडीडी में कुल योग के भंडारण के लिए एक सरल दृष्टिकोण के बारे में बात करते हुए मिला है। हालांकि यह विशेष रूप से ईवेंट सोर्सिंग के बारे में नहीं है, लेकिन वह PostgreSQL का उपयोग करके डोमेन ईवेंट स्टोर करने का एक तरीका है।

उनके दृष्टिकोण में, हमारे पास एक और एक JSON data फ़ील्ड के साथ एक तालिका Events है। यह बहुत सारी आजादी देता है, क्योंकि हम किसी भी JSON डेटा को स्टोर कर सकते हैं और इसलिए हम विभिन्न प्रकार की घटनाओं को स्टोर कर सकते हैं।

लेकिन सभी घटनाओंसभी समुच्चय एक एकल तालिका में करने के लिए इसी होने, मुझे एक छोटे से चिंतित बनाता है।

तो, जब हम इवेंट सोर्सिंग का उपयोग करने के लिए ईवेंट स्टोर करते हैं, तो हमें कैसे आगे बढ़ना चाहिए? मैं तीन विकल्प देख सकता हूं:

  1. लेख पर डोमेन ईवेंट के लिए उपयोग किए गए विचार के बाद और एक ही तालिका के अंदर सबकुछ स्टोर करें।

  2. प्रति ईवेंट एक टेबल बनाएं। यहां पर दोष यह है कि हमें प्रत्येक योग के लिए घटनाओं को ट्रैक करने की आवश्यकता है, और प्रत्येक कुल के लिए विभिन्न प्रकार की घटनाएं हो सकती हैं। तो यह आसानी से एक विशाल तालिका संख्या का नेतृत्व करेगा।

  3. कुल मिलाकर एक तालिका बनाएं और उस योग के लिए सभी घटनाओं को स्टोर करें। यद्यपि हम एक ही टेबल में एक साथ लाए गए विभिन्न प्रकार के कार्यक्रमों के साथ समाप्त होते हैं, लेकिन वे सभी एक ही कुल से संबंधित हैं।

इनमें से कौन सा विकल्प अधिक उचित होगा? यदि कोई नहीं है, तो ईवेंट सोर्सिंग का उपयोग करते समय ईवेंट स्टोर करने का सही तरीका क्या होगा?

उत्तर

6

लेकिन एक ही तालिका में सभी समेकितों के अनुरूप सभी घटनाएं होने से मुझे थोड़ा चिंता होती है।

FUD की तरह लगता है।

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

घटनाक्रम शायद सभी एक ही तार्किक दृश्य में हैं।

शारीरिक रूप से, आप चारों ओर घूमना चाहते हैं ताकि आप स्केल कर सकें। आप समीक्षा कर सकते हैं कि यूडी दहन को CQRS but differentslides में क्या कहना है। लेकिन यहां बुनियादी विचार यह है कि sharding/partitioning एक समस्या है कि डेटाबेस विक्रेता पहले से ही हल करने के व्यवसाय में हैं, इसलिए उन्हें ऐसा करने दें।

Postgres घटना दुकानों की चर्चाएं:

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