ก่อนส่งมอบ ทีมต้องจัดทำเอกสาร API สถาปัตยกรรม runbook และข้อจำกัด จึงถามว่า บริษัทมีเว็บแอปพลิเคชันที่ต้องรักษา Data Consistency ระหว่างการอัปเดตข้อมูลพร้อมกันจากผู้ใช้หลายคน (Concurrent Updates) โดยไม่ต้องการ Lock ข้อมูลนาน ควรใช้กลยุทธ์ใด
กOptimistic Concurrency Control โดยใช้ Version Number หรือ Timestamp ตรวจสอบว่าข้อมูลเปลี่ยนแปลงระหว่างการอ่านและบันทึกหรือไม่
ขPessimistic Locking โดย Lock ทุก Record ตั้งแต่ผู้ใช้เริ่มอ่านจนกว่าจะบันทึกเสร็จ
คปิดการใช้งาน Transaction ในฐานข้อมูลเพื่อเพิ่มความเร็ว
งให้ผู้ใช้คนสุดท้ายที่บันทึกชนะเสมอ (Last Write Wins) โดยไม่ตรวจสอบ Conflict
เฉลยอธิบาย
Optimistic Concurrency Control เหมาะสำหรับระบบที่มี Conflict ไม่บ่อยนัก โดยเพิ่ม Version Number ในแต่ละ Record เมื่อ UPDATE จะตรวจสอบว่า Version ตรงกับที่อ่านมาหรือไม่ ถ้าไม่ตรงแสดงว่ามีคนอื่นแก้ไขแล้ว ให้แจ้งผู้ใช้ Merge หรือ Retry ตัวเลือก A (Pessimistic Locking) Lock นานเกินไปทำให้ Throughput ต่ำ, ตัวเลือก C (Last Write Wins) ทำให้สูญข้อมูลการแก้ไขของผู้ใช้คนก่อน, ตัวเลือก D ปิด Transaction ทำให้ ACID ถูกละเมิด