ドメイン情報を含む文書を持つdomain
コレクションがあります。そのうちの1つは、歴史的なwhoisレコードです。これは、ゼロ以上で、ドキュメントのスペースの大半を占めています。MongoDB:ドキュメントを保存するとドキュメント全体が書き換えられますか?
ドキュメント全体を読み込んだ場合、小さいフィールド(数字フィールドを更新するようなもの)を変更してsave()
メソッドを使用すると、ドキュメント全体がディスクにフラッシュされるか、変更されたBSONのみが更新されますか?最終的に私の質問は、update()
のコードをI/Oを節約するために複雑にしなければならないのですか、それともsave()
を使うべきですか?
これはまさに怠惰のためではなく、ドキュメント全体が読み込まれた後に、ドキュメントを変更/処理するための一連の手順を経て、変更が加えられた場合、ドキュメント全体が保存されます。しかし、文書を保存するコストが高い場合は、多分それを別の方法と考える必要があります。
これは役に立ちますが、実際には私の質問には答えません。私が10MBのBSON文書を持っていれば、それは1つのプロパティを変更して読み込み、それを保存して10MBのフルをもう一度書きますか?文書を再配置する必要がないと仮定します。 –
MongoDBがメモリマップされたファイルを使用しているという事実は、* "は書かれたものです" *の詳細を参考にしてください。 1つのプロパティだけを更新すると、理想的にはそれらのバイトだけがディスクにフラッシュされます。しかし、BSONが十分に変更されれば、すべてをディスクにフラッシュすることになります。 –
@GatesVP:ページ全体が汚れていると考えられ、洗い流さなければなりません。 –