2

http://docs.mongodb.org/manual/core/sharding-internals/#balancing-internalsを参照してください。

次の句があります。

「MongoDB がチャンクの移行を開始すると、データベースは新しいサーバーへのデータのコピーを開始し、着信書き込み操作を追跡します。」

私の質問は、これらの着信書き込み操作はどこに保存されますか? メモリ内にある場合は、getLastError を呼び出して、データがディスクと同期していることを確認する方法が必要です。ありがとう!

4

1 に答える 1

1

まず、書き込みを保証したい場合は、シャーディングを使用しているかどうかに関係なく、とにかく getLastError を呼び出す (または安全な書き込みのためにドライバーの同等のものを使用する) 必要があります。

移行中に操作に何が起こるかという観点から。FAQ の次の 2 つの質問に対する回答を参照すると、進行中の書き込みのデータに何が起こるかについての回答を見つけることができます。

http://docs.mongodb.org/manual/faq/sharding/#what-happens-if-a-client-updates-a-document-in-a-chunk-during-a-migration

http://docs.mongodb.org/manual/faq/sharding/#what-does-writebacklisten-in-the-log-mean

2 つのメカニズムは、操作の性質に応じて何が起こるかを説明します。移行元のシャードによって、書き込みが宛先シャードに「送信」されることが保証されるか、ライトバック メカニズムによって書き込みが mongos プロセスに送り返されます (そこで、自動的に再試行されます)。

于 2012-08-28T08:45:52.517 に答える