Bagaimana Anda mengelola sinkronisasi dua arah antara server database 'utama' dan banyak server 'sekunder', dalam resolusi konflik tertentu, dengan asumsi koneksi tidak selalu tersedia?
Misalnya, saya memiliki aplikasi seluler yang menggunakan CoreData sebagai 'basis data' di iOS dan saya ingin mengizinkan pengguna mengedit konten tanpa koneksi internet. Pada saat yang sama, informasi ini tersedia di situs web tempat perangkat akan terhubung. Apa yang harus saya lakukan jika / ketika data pada dua server DB dalam konflik?
(Saya merujuk ke CoreData sebagai server DB, meskipun saya sadar itu adalah sesuatu yang sedikit berbeda.)
Apakah ada strategi umum untuk menangani masalah seperti ini? Ini adalah opsi yang dapat saya pikirkan:
1. Selalu menggunakan data sisi klien sebagai prioritas yang lebih tinggi
2. Sama untuk sisi server
3. Cobalah untuk menyelesaikan konflik dengan menandai cap waktu edit setiap bidang dan lakukan pengeditan terbaru
Meskipun saya yakin opsi ke-3 akan membuka ruang untuk beberapa kerusakan data yang merusak.
Saya sadar bahwa teorema CAP menyangkut hal ini, tetapi saya hanya ingin konsistensi akhirnya, sehingga tidak mengesampingkannya sepenuhnya, kan?
Pertanyaan terkait: Pola praktik terbaik untuk sinkronisasi data dua arah . Jawaban kedua untuk pertanyaan ini mengatakan itu mungkin tidak dapat dilakukan.