7

相互に同期を維持したい複数のCouchDBサーバーがあり、これらのサーバーを使用して大きなファイル(たとえば、> 100 MB)を共有しています。それらの同期を維持するために、各CouchDBインスタンスに他のインスタンスからの継続的なプルレプリケーションを実行させます。

次に例を示します。3つのCouchDBサーバーA、B、およびCがあり、それらはすべて相互に継続的なプルレプリケーションを持っています。

------- <------------- -------
|  A  | -------------> |  B  |
-------                -------
  ^ |                   | ^
  | |                   | |
  | V                   | |
------- <---------------- |
|  C  | -------------------
-------

誰かが500MBの添付ファイルを含むドキュメントをサーバーAにアップロードします。BとCは両方ともAからのドキュメントの複製を開始し、BはCが行う前に複製を終了します。

-------    doc         -------
|  A  |--------------->|  B  |
-------                -------
   |
   | doc
   V
-------
|  C  |
-------

私の質問は、 CがAからドキュメントを転送している間に、CはBから同じドキュメントの複製を開始しますか(CもBからの継続的なプル複製を持っているため) ?

-------                -------
|  A  |                |  B  |
-------                -------
   |          doc         |
doc|    |------------------
   |    |
   V    V
  -------
  |  C  |
  -------                           

AFAIK、CouchDBレプリケーションは、ドキュメント(添付ファイルを含む)がソースから完全にフェッチされるまで(_bulk_docs APIを使用して)レプリケートされたドキュメントを実際にターゲットに保存しないため、これが発生すると思います[1]。冗長で帯域幅の大きな浪費になるので、これが発生するのではないかと心配しています。

[1] https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm

4

1 に答える 1

1

CouchDB users @リストに関する最近の議論と、レプリケーションアルゴリズムを説明するこのドキュメントによると、レプリケーションは、どのアタッチメントがターゲットにすでに存在しているかを認識しています。ただし、添付ファイルが非常に大きく、どちらかが終了する前に両端が複製を開始した場合、添付ファイルは複数回転送されます。

于 2013-10-23T15:34:53.773 に答える