0

MongoDB には構成可能な耐久性があります: 更新操作を行うときに、「書き込み懸念」を指定して、データが (たとえば) ディスクにフラッシュされ、X スレーブに複製された場合にのみ更新が完了したと見なされるようにシステムに指示できます。 .

現在の更新ではなく、それ以前の書き込みについて何らかの保証はありますか? 3 つのドキュメントを更新したい場合、それらすべてにコストのかかる書き込み懸念をタグ付けする必要がありますか?それとも、最後の操作だけで問題を発行するだけで十分ですか?

また、この推論は、接続プール (つまり、3 つの異なる接続で行われる 3 つの更新) とシャーディング (つまり、複数のシャードに影響する 3 つの更新) の使用によって影響を受けますか?

4

1 に答える 1

1

複数の書き込みに同じ接続を使用する場合、正常に返される j, safe, fsync フラグを指定した getLastError は、最後の操作の前の前の操作が既に他のサーバーに保存/複製されていることを示します。

ただし、これらの以前の操作が何らかの理由で失敗した場合、操作ごとに getLastError を呼び出さないと、それを知ることができません。ただし、書き込みが異なる接続から送信された場合、すべての操作がディスクに保存されたり、他のサーバーに複製されたりする保証はありません。

于 2011-12-15T07:00:02.403 に答える