MongoDBには、ディスク上のデータベースの実際のサイズを fileSize として提供する dbstats 呼び出しがあります。ただし、dbstats は実行中にデータベース サーバーをブロックし、長時間実行される可能性があるため、運用環境での使用には適していません。(同僚によると)安全だとされているcollstats呼び出しがありますが、その戻り値にはfileSizeメンバーがなく、storageSizeメンバーのみがあります。これは dbstats().dataSize、fileSize、および storageSize の説明であり、 storageSizeと fileSize は異なると主張しています。ドキュメントはあいまいですが、経験的に違いを確認しました:
> MB = Math.pow(2, 20)
> db.stats(MB)
{
"db" : "somedb",
"collections" : 11,
"objects" : 68200,
"avgObjSize" : 1153.922991202346,
"dataSize" : 75,
"storageSize" : 117,
"numExtents" : 34,
"indexes" : 17,
"indexSize" : 8,
"fileSize" : 448,
"nsSizeMB" : 16,
"ok" : 1
}
>
サーバー API を使用して、サーバーを 15 分間ブロックすることなく、ディスク上の MongoDB データベースの実際のサイズを計算する方法はありますか?
更新:特にサーバー API を探しています。私の使用例は、ファイルシステムへの直接アクセスを想定できない db ブラウザであるMongsにディスク使用統計を追加することです。