अगर मैं इवेंट सोर्सिंग डेटा को स्टोर करने के लिए RDBMS (जैसे SQL सर्वर) का उपयोग कर रहा था, तो स्कीमा कैसा दिख सकता है?
मैंने कुछ भिन्नताओं को एक सार अर्थ में बात करते देखा है, लेकिन कुछ भी ठोस नहीं है।
उदाहरण के लिए, मान लीजिए कि एक "उत्पाद" इकाई है, और उस उत्पाद में परिवर्तन इस प्रकार हो सकता है: मूल्य, लागत और विवरण। मैं उलझन में हूँ कि क्या मैं:
- एक "ProductEvent" तालिका है, जिसमें एक उत्पाद के लिए सभी फ़ील्ड हैं, जहां प्रत्येक परिवर्तन का मतलब है कि तालिका में एक नया रिकॉर्ड है, साथ ही "कौन, क्या, कहाँ, क्यों, कब और कैसे" (WWWWWH) को उपयुक्त मानते हैं। जब लागत, मूल्य या विवरण बदल दिया जाता है, तो उत्पाद का प्रतिनिधित्व करने के लिए एक पूरी नई पंक्ति।
- स्टोर उत्पाद की लागत, मूल्य और विवरण अलग-अलग तालिकाओं में एक विदेशी कुंजी संबंध के साथ उत्पाद तालिका में शामिल हो गए। जब उन गुणों में परिवर्तन होता है, तो WWWWWH के साथ नई पंक्तियों को उचित रूप में लिखें।
- स्टोर WWWWWH, प्लस एक "ProductEvent" तालिका में, इस घटना का प्रतिनिधित्व करने वाली एक क्रमबद्ध वस्तु, जिसका अर्थ है कि घटना को लोड किया जाना चाहिए, किसी दिए गए उत्पाद के लिए एप्लिकेशन स्टेट को फिर से बनाने के लिए मेरे एप्लिकेशन कोड में डी-सीरियल किए और फिर से खेला जाना चाहिए। ।
विशेष रूप से मैं ऊपर विकल्प 2 के बारे में चिंता करता हूं। चरम पर ले जाया गया, उत्पाद तालिका लगभग एक-तालिका-प्रति-संपत्ति होगी, जहां दिए गए उत्पाद के लिए एप्लिकेशन राज्य को लोड करना होगा, प्रत्येक उत्पाद घटना तालिका से उस उत्पाद के लिए सभी घटनाओं को लोड करने की आवश्यकता होगी। यह टेबल-धमाका मेरे लिए गलत है।
मुझे यकीन है कि "यह निर्भर करता है", और जब कोई एकल "सही उत्तर" नहीं है, तो मैं यह महसूस करने की कोशिश कर रहा हूं कि क्या स्वीकार्य है, और क्या पूरी तरह से स्वीकार्य नहीं है। मुझे यह भी पता है कि NoSQL यहां मदद कर सकता है, जहां घटनाओं को एक कुल रूट के खिलाफ संग्रहीत किया जा सकता है, जिसका अर्थ डेटाबेस से केवल एक ही अनुरोध है कि वह ऑब्जेक्ट को फिर से बनाने के लिए घटनाओं को प्राप्त कर सके, लेकिन हम NoSQL db का उपयोग नहीं कर रहे हैं इसलिए मैं विकल्प के लिए चारों ओर महसूस कर रहा हूं।