Bir bağlantının her zaman mümkün olmadığı varsayılarak, 'ana' veritabanı sunucusu ile birçok 'ikincil' sunucu arasında, özellikle de uyuşmazlık çözümü arasında iki yönlü senkronizasyonu nasıl yönetirsiniz?
Örneğin, iOS'ta 'veritabanı' olarak CoreData kullanan ve kullanıcıların içeriği Internet bağlantısı olmadan düzenlemelerine izin vermek istiyorum. Aynı zamanda, bu bilgiler cihazların bağlanacağı bir web sitesinde bulunabilir. İki DB sunucusundaki veriler çakışıyorsa / ne yapmalıyım?
(CoreData'ya bir DB sunucusu olarak bakıyorum, bunun biraz farklı bir şey olduğunun farkındayım.)
Bu tür bir sorunla başa çıkmanın genel stratejileri var mı? Aklıma gelen seçenekler şunlardır:
1. Her zaman müşteri tarafı verilerini yüksek öncelikli olarak kullan
2. Sunucu tarafı için aynı
3. Her alanın düzenleme zaman damgasını işaretleyerek ve en son düzenlemeyi alarak çatışmaları çözmeye çalışın
Yine de 3. seçeneğin bazı yıkıcı veri bozulmalarına yer açacağından eminim.
CAP teoreminin bu konuyla ilgili olduğunun farkındayım, ama sadece nihai tutarlılığı istiyorum, bu yüzden tamamen dışlamaz.
İlgili soru: İki yönlü veri senkronizasyonu için en iyi uygulama modelleri . Bu sorunun ikinci cevabı muhtemelen yapılamadığını söylüyor.