คุณจะจัดการการซิงโครไนซ์แบบสองทางระหว่างเซิร์ฟเวอร์ฐานข้อมูล 'หลัก' และเซิร์ฟเวอร์ 'รอง' จำนวนมากได้อย่างไรในการแก้ไขข้อขัดแย้งโดยเฉพาะหากการเชื่อมต่อไม่สามารถใช้ได้ตลอดเวลา
ตัวอย่างเช่นฉันมีแอพมือถือที่ใช้ CoreData เป็น 'ฐานข้อมูล' บน iOS และฉันต้องการอนุญาตให้ผู้ใช้แก้ไขเนื้อหาโดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต ในเวลาเดียวกันข้อมูลนี้มีอยู่ในเว็บไซต์ที่อุปกรณ์จะเชื่อมต่อ ฉันจะทำอย่างไรถ้า / เมื่อข้อมูลในเซิร์ฟเวอร์ DB ทั้งสองมีข้อขัดแย้ง
(ฉันอ้างถึง CoreData เป็นเซิร์ฟเวอร์ฐานข้อมูล แต่ฉันรู้ว่ามันเป็นสิ่งที่แตกต่างออกไปเล็กน้อย)
มีกลยุทธ์ทั่วไปในการจัดการกับปัญหาประเภทนี้หรือไม่? นี่คือตัวเลือกที่ฉันคิดได้:
1. ใช้ข้อมูลฝั่งไคลเอ็นต์เป็นลำดับความสำคัญที่สูงขึ้น
2. เหมือนกันกับฝั่งเซิร์ฟเวอร์
3. พยายามแก้ไขข้อขัดแย้งด้วยการทำเครื่องหมายการประทับเวลาการแก้ไขของแต่ละฟิลด์และทำการแก้ไขล่าสุด
แม้ว่าฉันจะแน่ใจว่าตัวเลือกที่ 3 จะเปิดห้องสำหรับการทำลายข้อมูลที่รุนแรง
ฉันรู้ว่าทฤษฎีบท CAP เกี่ยวข้องกับเรื่องนี้ แต่ฉันต้องการความมั่นคงในที่สุดเท่านั้นดังนั้นมันจึงไม่ได้ออกกฎสมบูรณ์ใช่ไหม?
คำถามที่เกี่ยวข้อง: ที่ดีที่สุดรูปแบบการปฏิบัติสำหรับการประสานข้อมูลแบบสองทาง คำตอบที่สองสำหรับคำถามนี้บอกว่าคงไม่สามารถทำได้