synchronization - 同期 - rxdb



Couchdbオンラインオフライン同期 (1)

私はすべてのデータが書き込まれるローカルのCouchDBインスタンスとローカルのCouchDBが同期される中央のCouchDBを持つ.NETアプリケーションを構築しています。 難点は、異なるポイントでデータベースと同期する複数のクライアントが存在することです(既存のデータを編集して競合を引き起こす可能性があります)。 インターネット接続が一貫しないため、結果として大部分のデータはオフラインで作成/編集されます。

私はCouchDBがこれを本質的に処理すると信じていますが、_changesまたは_replicatorの機能(またはその組み合わせ)を使用する必要があるかどうかを判断するのは難しいです。 このシナリオをどのように処理するかについてのいくつかの指摘を非常に感謝します。


Couchdbは競合を検出しますが、競合を処理する責任はあなたにあります。 couchdbの競合モデルの詳細と、レプリケーションのためのアプリケーションを設計するいくつかの方法があります。

_changesは、特定のドキュメントに最近行った変更のみを提供するため、レプリケートするのには適していません。 したがって、新しく作成されたデータベースに変更フィードを使用してレプリケートすると、古い変更の一部が失われます。 そして、あなたが手動で_replicationする文書を更新するなどの操作を手動で実行する必要があります。 _replicationには、ターゲット・データベースがまだ存在しない場合に作成する機能もあります。

あなたが変更のcontinuousフィードを聞いていても、ドキュメントの更新が返されることはありません。

データベース内の文書に対する変更のソートされたリストを、アプリケーションの時間順に返します。これは、データベースの_changesリソースから取得できます。 特定のドキュメントの最新の変更のみが保証されます。たとえば、ドキュメントにフィールドが追加されて削除された場合、変更を確認するAPIクライアントは必ずしも追加されたドキュメントの中間状態を受け取るとは限りません。

したがって、 replicationは、さまざまなデバイス間でデータを複製することを計画している場合には行かなくてはなりません。