การเปลี่ยนจากข้อมูลเชิงสัมพันธ์ไปสู่อีเวนต์
(event-driven.io)คู่มือการเปลี่ยนจากข้อมูลเชิงสัมพันธ์ไปสู่อีเวนต์
- ในแนวคิด event sourcing ข้อมูลทางธุรกิจจะถูกเก็บรักษาเป็นอีเวนต์โดยไม่สูญหาย
- อีเวนต์แสดงถึงข้อเท็จจริงที่เกิดขึ้น และจะถูกบันทึกหลังจากการทำงานแต่ละครั้ง
- event stream คือรายการของอีเวนต์ทั้งหมดที่ถูกบันทึกไว้ มีคุณสมบัติไม่เปลี่ยนแปลง และสามารถแก้ไขความผิดพลาดในอดีตได้ด้วยการเพิ่มอีเวนต์ใหม่
1. ค้นหาคอลัมน์สถานะ
- ค่าของคอลัมน์สถานะอาจสะท้อนช่วงต่างๆ ในวงจรชีวิตของข้อมูล
- ตัวอย่างเช่น คำสั่งซื้ออาจเริ่มต้น ถูกจัดส่ง หรือชำระเงินแล้ว
- สถานะเหล่านี้สามารถแปลงเป็นอีเวนต์อย่าง Order Initiated, Order Shipped, Order Paid ได้
2. ตรวจสอบคอลัมน์วันที่
- คอลัมน์วันที่อาจให้ข้อมูลเกี่ยวกับเหตุการณ์สำคัญในกระบวนการ
- เช่น ShipmentDate, DeliveryDate, OrderPlacementDate ซึ่งช่วยบอกคำศัพท์ทางธุรกิจและช่วยในการนำอีเวนต์ใหม่เข้ามาใช้
3. วิเคราะห์ selectivity ของคอลัมน์
- คอลัมน์ที่เป็น Nullable อาจเป็นข้อมูลที่ให้ภายหลังหรือเป็นทางเลือก
- คอลัมน์บังคับควรถูกส่งมาในอีเวนต์ Order Initiated แรก
4. ค้นหาตารางที่มีความสัมพันธ์แบบ 1 ต่อ หลาย มากที่สุด
- ใน event sourcing จะจัดกลุ่มข้อมูลโดยมี business process เป็นศูนย์กลางเพื่อให้ประมวลผลได้อย่างมีประสิทธิภาพ
- ตารางที่มีความสัมพันธ์แบบ 1 ต่อ หลาย จำนวนมาก อาจเป็นตัวเลือกที่ดีสำหรับประเภทของสตรีม
5. เพิ่มอีเวนต์แบบชัดเจน
- เมื่อต้องย้ายข้อมูลเชิงสัมพันธ์ไปเป็นอีเวนต์ ไม่ควรนำอีเวนต์ที่ค้นพบใหม่มาใช้ซ้ำระหว่างการ import แต่ควรระบุอีเวนต์ Order Imported อย่างชัดเจน
6. ทดลองและตรวจสอบ
- ลองทำต้นแบบในสภาพแวดล้อมที่ปลอดภัย เปรียบเทียบผลลัพธ์กับที่คาดไว้ และทำซ้ำอย่างไม่เร่งรีบ
ความเห็นของ GN⁺
- ประเด็นสำคัญที่สุดของบทความนี้คือความสำคัญของแนวทางใหม่ในการเก็บรักษาข้อมูลทางธุรกิจระหว่างการเปลี่ยนจากฐานข้อมูลเชิงสัมพันธ์ไปสู่ event sourcing
- เหตุผลที่บทความนี้น่าสนใจคือมันนำเสนอวิธีที่ช่วยให้เข้าใจและใช้ประโยชน์จากวงจรชีวิตของข้อมูลได้ดีกว่ารูปแบบการจัดการข้อมูลแบบเดิม
- event sourcing อาจช่วยสร้างความเข้าใจร่วมกันระหว่างทีมธุรกิจและทีมเทคนิคได้ ไม่ใช่แค่ในมุมมองทางเทคนิคเท่านั้น
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
แนะนำให้ใช้ PostgreSQL และเครื่องมือรายงานแบบ FOSS
ช่วงเวลาที่เหมาะสมในการใช้สถาปัตยกรรมแบบ event-driven
การแชร์ประสบการณ์ที่ค่อนข้างไม่เชื่อมั่นต่อ event sourcing
ประโยชน์ของการทำ domain event modeling
คำถามเกี่ยวกับการนำ event sourcing ไปใช้จริง
bottom-up เทียบกับ top-down, แบบปรับแต่งเฉพาะ เทียบกับแบบทั่วไป
ทั้งสนับสนุนและวิจารณ์สถาปัตยกรรมแบบ event-based
event sourcing กับความจำเป็นของความเป็นเชิงสัมพันธ์
การสนับสนุนข้อมูลเชิงสัมพันธ์
มุมมองใหม่ต่อการออกแบบแบบ event-driven