接続が常に利用可能ではないことを前提として、「メイン」データベースサーバーと多くの「セカンダリ」サーバー間の双方向同期、特に競合解決をどのように管理しますか?
たとえば、iOSでCoreDataを「データベース」として使用するモバイルアプリがあり、ユーザーがインターネットに接続せずにコンテンツを編集できるようにしたいと考えています。同時に、この情報はデバイスが接続するWebサイトで入手できます。2つのDBサーバーのデータが競合している場合/その場合はどうすればよいですか?
(CoreDataをDBサーバーと呼びますが、多少異なることがわかります。)
この種の問題に対処するための一般的な戦略はありますか?これらは私が考えることができるオプションです:
1.常にクライアント側のデータを優先度の高いものとして使用します
2.サーバー側でも同じ
3.各フィールドの編集タイムスタンプをマークして最新の編集を行うことで競合を解決してください
3番目のオプションは壊滅的なデータ破損の余地を開くと確信していますが。
CAP定理がこれに関係していることは承知していますが、最終的な整合性のみが必要なので、完全に除外するわけではありませんか?
関連質問:双方向データ同期のベストプラクティスパターン。この質問に対する2番目の答えは、おそらくそれができないということです。