1

私は、多数のユーザーがメッセージをデータベースに保存することを意図したプロジェクトに取り組んでいます。テキストとバイナリ データ (電子メールを考えてください) の混合で構成されるこれらのメッセージは、個々のユーザーと多対 1 の関係を持ちます。mongo db には、個々のドキュメントに対して 16 MB のドキュメント サイズ制限があるため、リンクを介してそれらを関連付ける必要があると考えていました。

これには 2 つの個別のコレクションが必要になるため、ラウンド トリップが増え、パフォーマンスが低下します。私が考えていない代替手段はありますか?

4

1 に答える 1

2

まあ、あまり選択肢はありません。リンクまたは埋め込みが標準の選択肢です。ただし、場合によっては、ハイブリッドアプローチを実装することが有益な場合があります。私はそれを「バッチ」と呼んでいます。

このアプローチの本質は、埋め込みの場合と同じように、多くのメッセージを1つのドキュメントに貼り付けることです。そのドキュメントがオーバーフローしそうになると、2番目のドキュメントへの書き込みを開始します(最初のドキュメントへのリンクがあります)。

このようにすると、単一のリンクされたドキュメントよりも一括読み取りのパフォーマンスが向上しますが、それらを効率的にクエリすることもできません(メッセージであるため、パックからいくつかのドキュメントをクエリする必要があると思います)。

クエリパターンを評価し、賢明に選択してください。

于 2012-11-09T06:30:34.060 に答える