การจัดหาและการคงอยู่ของเหตุการณ์


12

ฉันกำลังอ่านข้อมูลเกี่ยวกับการจัดหากิจกรรมและมีคำถามเกี่ยวกับการคงอยู่

ฉันยังมีฐานข้อมูลกับหน่วยงานทั้งหมดได้ไหม หรือเหตุการณ์ควรจะเล่นซ้ำทุกครั้งที่แอปพลิเคชั่นเริ่มต้นเพื่อรับเอนทิตีแต่ละรุ่นล่าสุดในหน่วยความจำ? ดูเหมือนว่าจะเสียไปกับระบบที่มีขนาดใหญ่กว่า (เช่นในข้อมูลจำนวนมาก)?

จุดที่มีการจัดหากิจกรรมคือฉันสามารถเล่นซ้ำเหตุการณ์เพื่อเติมที่เก็บข้อมูลถ้าจำเป็น? (หรือวิเคราะห์ข้อมูล)

คำตอบ:


9

คุณจะได้รับประโยชน์สูงสุดจากการจัดหากิจกรรมเมื่อคุณตัดสินใจที่จะเปลี่ยนสถาปัตยกรรมระบบของคุณด้วย การไปสู่สถาปัตยกรรมสไตล์ CQRS รวมกับ DDD จะทำให้เกิดประโยชน์ที่แท้จริงของการจัดหากิจกรรมอย่างน้อยก็ในความคิดของฉัน

การสร้างที่จัดเก็บกิจกรรมที่ทำงานได้ดีในระบบขนาดใหญ่ไม่ใช่เรื่องง่าย การเล่นซ้ำข้อมูลทั้งหมดอาจมีราคาแพงขึ้นอยู่กับจำนวนข้อมูลที่ต้องเล่นซ้ำมาก แต่มีเทคนิคที่อาจช่วยคุณได้สิ่งนี้หนึ่งในนั้นคือแนวคิดของภาพรวม การเล่นซ้ำจะทำได้จากจุดหนึ่งไปข้างหน้า ข้อดีที่มีการจัดเก็บเหตุการณ์เข้าสู่ระบบของคุณมีค่า การมีทุกสิ่งที่เกิดขึ้นในระบบของคุณสามารถเล่นซ้ำได้ข้อมูลทั้งหมดในทุกช่วงเวลาเป็นสิ่งที่ยอดเยี่ยม คิดถึงการวิเคราะห์เกี่ยวกับการสร้างข้อผิดพลาดเกี่ยวกับสถิติ

มีร้านค้ากิจกรรมที่ยอดเยี่ยมมากมายร้านค้าร้านสุดท้ายเพิ่งเปิดตัวเมื่อวานนี้Event Storeและดูเหมือนว่าจะเป็นร้านที่ดีจริงๆ

ฐานข้อมูลดั้งเดิมสามารถเก็บไว้เพื่อเป็นส่วนหนึ่งของระบบของคุณในการสร้าง DTO ด้วยข้อมูลที่ร้องขอ ฐานข้อมูลนี้สามารถจัดระเบียบและปรับให้เหมาะสมเมื่อพิจารณาถึงความต้องการการค้นหาของแอปพลิเคชันและลูกค้าของคุณ

ฉันเขียนบทความโดยละเอียดเกี่ยวกับสิ่งที่มีประโยชน์และสถาปัตยกรรม CQRS รวมกับการจัดหากิจกรรมมีลักษณะอย่างไร คุณสามารถตรวจสอบออกCQRS เหตุการณ์โดเมนและทบทวน


1
ฉันรู้ทั้งหมดเกี่ยวกับ CQRS และ DDD ฉันเข้าใจถึงประโยชน์ของการจัดหากิจกรรม ภาพรวมเป็นวิธีที่ดีในการเร่งกระบวนการ อย่างไรก็ตามนั่นไม่ใช่ส่วนหนึ่งของคำถาม แต่คำถามก็คือว่าทุกรุ่น / เอนทิตีจะถูกเก็บไว้เมื่อโหลด ในหน่วยความจำ (ต้องการหน่วยความจำจำนวนมากในระบบที่ใหญ่กว่า) หรือในฐานข้อมูล? วิธีปฏิบัติที่ดีที่สุดคืออะไร
jgauffin

1
เมื่อสร้างการรวมเพื่อดำเนินการกับคำสั่งที่กำหนดเหตุการณ์จะถูกเล่นซ้ำและการรวมที่เก็บไว้ในหน่วยความจำทำการดำเนินการสร้างเหตุการณ์แล้วจัดเก็บเหตุการณ์ในที่จัดเก็บเหตุการณ์ แต่ใช่รวมกับวัตถุมูลค่าและหน่วยงานจะถูกเก็บไว้ในหน่วยความจำ ไม่จำเป็นต้องเก็บไว้ในฐานข้อมูลอื่น ซึ่งโดยปกติจะเป็นช่วงเวลาสั้น ๆ จนกว่าคำสั่งจะเสร็จสมบูรณ์ต่อไป หากคุณมีคำสั่งที่ครอบคลุมการรวมหลายรายการที่แตกต่างกันเล็กน้อยมันอาจส่งสัญญาณปัญหาการออกแบบบางอย่างกับบริบทที่ล้อมรอบของคุณ
Vadim

9

ด้วยการจัดหากิจกรรมคำถามหลักคือ "หนังสือบันทึกของคุณคืออะไร"

หากหนังสือบันทึกของคุณเป็นสตรีมกิจกรรมของคุณคุณจะไม่มีปัญหา หากหนังสือบันทึกของคุณเป็น "โมเดลเอนทิตี" ของคุณปัญหาจะเริ่มเกิดขึ้นทั่วทุกที่ ส่วนหนึ่งของสิ่งนี้คือคุณสามารถพูดว่า "หากฉันทำแบบจำลองเอนทิตีของฉันหายไป หากคุณอยู่ในเชิงบวกกับคำถามนี้แล้วบันทึกเหตุการณ์ของคุณเป็นหนังสือบันทึกของคุณ

สิ่งสำคัญที่ต้องจำไว้คือคนส่วนใหญ่ที่ใช้การจัดหากิจกรรมใช้แบบอ่าน รุ่นนี้ใช้สำหรับการสืบค้นข้อมูล นี่มีแนวโน้มที่จะมีลักษณะคล้ายกับโมเดล 1nf มากกว่ารุ่นเอนทิตี 3nf พวกเขาเพียงแค่เล่นซ้ำเหตุการณ์เพื่อกลับสถานะของการรวมเพื่อตรวจสอบว่าการเขียนควรได้รับอนุญาต


สวัสดี Greg ฉันใหม่ในการจัดหากิจกรรม แต่ฉันต้องการเป็นผู้เชี่ยวชาญในเรื่องนี้คุณช่วยแนะนำทรัพยากรบางอย่างสำหรับตัวอย่างและคำอธิบายที่ใช้งานได้จริงฉันได้ดูและอ่านมากเกี่ยวกับ CQRS, ES แต่เมื่อฉันต้องการเริ่มต้นแบบ ใช้ฉันฉันไม่สามารถคิดออกว่าเมื่อไหร่ :) ฉันหวังว่าคุณสามารถแนะนำบางอย่างสำหรับฉัน (ฉันบนฝั่ง java) ขอบคุณที่สละเวลา.
vach

1

ฉันยังมีฐานข้อมูลกับหน่วยงานทั้งหมดได้ไหม หรือเหตุการณ์ควรจะเล่นซ้ำทุกครั้งที่แอปพลิเคชั่นเริ่มต้นเพื่อรับเอนทิตีแต่ละรุ่นล่าสุดในหน่วยความจำ?

คำตอบขึ้นอยู่กับข้อกำหนดของแอปพลิเคชันของคุณ ฉันได้เห็นมันทำทั้งสองวิธี

หนึ่งแพคเกจซอฟต์แวร์ที่ประสบความสำเร็จอย่างยิ่งสำหรับ บริษัท บัญชีขนาดเล็กอ่านบันทึก CQRS ทุกครั้งที่เริ่มต้นระบบ จำนวนข้อมูลดิบมีขนาดค่อนข้างเล็กดังนั้นเวลาเริ่มต้นใช้งานจึงใช้เวลาไม่ถึงหนึ่งนาทีแม้ในคอมพิวเตอร์ที่ทำงานช้ากว่า พวกเขาได้ทำ CQRS มานานกว่าทศวรรษก่อนที่การฝึกจะเป็นที่นิยม พวกเขารู้ว่าพวกเขากำลังทำสิ่งที่ดีเมื่อพวกเขาตระหนักว่าพวกเขาสามารถอัพเกรดข้อมูลลูกค้าของพวกเขาอีกครั้งและอีกครั้งโดยไม่ประสบปัญหาที่พวกเขาเห็นด้วยระบบขนาดใหญ่ของพวกเขา

ในระบบที่มีปริมาณข้อมูลขนาดใหญ่และ / หรือระบบที่ใช้ฟังก์ชัน RDBMS สำหรับการดำเนินการด้านแบบสอบถามคุณมีฐานข้อมูลสำหรับ "มุมมองปัจจุบัน" ของข้อมูลที่มาจากเหตุการณ์ (คุณสามารถมีมุมมองได้หลายมุมมอง) ข้อได้เปรียบของวิธีนี้คือช่วยให้คุณสร้างด้านแบบสอบถามโดยใช้เทคโนโลยีที่คุ้นเคย


แพ็คเกจการบัญชีใดที่ใช้ทำสิ่งนี้
แมกนัส

@ user1420752 AXYS
dasblinkenlight
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.