1. ホーム
  2. mongodb

[解決済み] MongoDB BSON ドキュメントサイズ制限を理解する

2022-05-04 20:19:27

質問

MongoDB ザ・ディフィニティブ・ガイドより。

4MB(BSONに変換した場合)以上のドキュメントは作成できません。 データベースに保存されます。これはやや恣意的な制限です(今後変更される可能性もあります)。 これは、スキーマの設計ミスを防ぐため、また、将来的に引き上げられる可能性があります。 一貫した性能を発揮します。

この制限がよくわからないのですが、たまたま4MBを超えた多くのコメントを含むブログ記事を含む文書は、1つの文書として保存できないということでしょうか?

また、ネストされたドキュメントもカウントされるのでしょうか?

ある値への変更を監査する文書が必要な場合はどうすればよいのでしょうか。(最終的には4MBを超える可能性があります)。

どなたか正しく説明してくださるといいのですが。

私はちょうどMongoDBについて読み始めたところです(私が学んでいる最初のnosqlデータベース)。

ありがとうございました。

解決方法は?

まず、これは実際に次のバージョンで上げられている 8MB または 16MB しかし、10gen(MongoDBを開発した会社)のEliotは、このことを最もうまく表現していると思います。

EDITです。 サイズが 正式に に「引き上げ」ました。 16MB

つまり、あなたのブログの例では、4MBは 実は、いっぱいあるんです。例えば の全文が圧縮されていない。 は364k(html)しかありません。 http://www.gutenberg.org/etext/36

ブログの記事がそんなに長くて コメント数が多いので、私としては 読みに行く)

トラックバックの場合、1MBを専用にすれば を使えば、簡単に 10k以上(おそらく20kに近い)。

そのため、本当に奇妙な場合を除き という状況でも、うまくいくでしょう。そして 例外的なケースやスパムは、本当に 20mbのオブジェクトは必要ないと思います。 ということです。トラックバックの上限は 15k程度であれば、かなり理にかなっていると思います。 パフォーマンス的にはどうなんだろう。あるいは、少なくとも を、少なくとも特別なケー が発生します。

-エリオット

限界に達するのはかなり難しいと思います......時間が経つにつれて、アップグレードすれば......心配する必要はなくなると思います。

制限の主なポイントは、サーバーのすべてのRAMを使い切らないようにすることです(すべてのRAMをロードする必要があるため)。 MB をRAMに保存します)。

つまり、一般的なシステムで通常使用可能なRAMの何%かが上限となり、それは年々増加し続けるでしょう。

MongoDBにファイルを保存する際の注意点

を超えるサイズのドキュメント(またはファイル)を保存する必要がある場合、そのドキュメント(またはファイル)は 16MB を使用することができます。 GridFS API これは、データを自動的にセグメントに分割し、ストリーミングで返します(したがって、サイズ制限/RAMの問題を回避することができます)。

<ブロッククオート

GridFSは、ファイルを1つのドキュメントに格納するのではなく、ファイルをパーツ(チャンク)に分割し、各チャンクを別のドキュメントとして格納します。

GridFSでは、ファイルを格納するために2つのコレクションを使用する。1つはファイルのチャンクを格納するコレクション、もう1つはファイルのメタデータを格納するコレクションです。

この方法を使えば、SQLデータベースと同じように、画像、ファイル、動画などをデータベースに格納することができます。私はこの方法で、数ギガバイトのビデオファイルを保存したこともあります。