mongodb にレポート付きの写真をアップロードしています。データベースのサイズ制限に達しました。データベースのサイズを増やすにはどうすればよいですか?
db.stats()
{
"db" : "fieldops",
"collections" : 6,
"objects" : 20454,
"avgObjSize" : 890464.9997066589,
"dataSize" : 18213571104,
"storageSize" : 18432802736,
"numExtents" : 52,
"indexes" : 4,
"indexSize" : 809424,
"fileSize" : 21398290432,
"nsSizeMB" : 16,
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"dataFileVersion" : {
"major" : 4,
"minor" : 22
},
"ok" : 1
}
また、余談ですが、現在、毎月アップロードされる写真が 12,000 枚あります。mongodb の制限は 16,000 枚だと読みました。用語集でdata file
の定義が見つかりませんでした。これは、データベースにアップロードした写真のことを指しているのでしょうか? そうなると、シャード付きの別のサーバーをセットアップする必要がありますか? それとも、同じマシンにシャードを作成できますか?data file
buffered
前もって感謝します。
答え1
mongodb にレポート付きの写真をアップロードしています。データベースのサイズ制限に達しました。データベースのサイズを増やすにはどうすればよいですか?
ディスク容量が十分あると仮定すると、MongoDBは必要に応じて追加のディスク容量を自動的に割り当てます。MMAPストレージエンジンを実行しているため(出力に基づいてdb.stats()
)、MongoDBは新しいファイルごとに最大2GB(または、smallFiles
オプション)。データベースが現在 18 GB を超えていることを考えると、少なくとも 2 GB の空き容量が必要になります (一時ディレクトリが同じボリュームにある場合は、O/S 用の容量も必要になります)。
指定された上限のあるコレクションを使用しない限り、コレクションのドキュメント数に制限はありません。max
制限(2^32 未満である必要があります)。数兆のドキュメントを含む MongoDB の本番環境が存在します(参照:大規模な MongoDB)。
MongoDB 3.0以降にはストレージエンジンAPIがあるため、ストレージエンジンによって異なる制限がある場合があります。たとえば、データサイズの制限従来の MMAPv1 ストレージ エンジンの場合、mongod
ジャーナリングが有効になっていると、通常 64 テラバイトのデータになります。WiredTiger ストレージ エンジン (3.0 ではオプション、3.2 以降ではデフォルト) にはこの制限はありません。
毎月数万件のドキュメントを挿入しても問題はありません。
詳細については、以下を参照してください。MongoDB の制限としきい値。