2017-07-18 3 views
0

DocumentDBで自分のDBのエントリごとに別々のドキュメントを作成する必要がありますか、または単一のドキュメントを作成してすべての要素を含む配列を作成する必要がありますか?Azure DocumentDBに、より多くのドキュメントを作成するか、アレイを含むドキュメントを少なくする必要がありますか?

カテゴリに基づいて差別化された約30k-40kの製品がある場合、製品ごとに30kドキュメントを作成する必要がありますか、カテゴリごとにドキュメントを作成し、そのカテゴリドキュメントの配列に製品を追加する必要がありますか?

パフォーマンスとコストの両方を知りたい。

答えて

1

それはすべての非常にアプリ&データに依存しますが、客観的な立場からそのままモデリング、コスト、およびパフォーマンスを文書化するための「正しい」答えは、ありません:

あなたは可変長配列を持っている場合、あなたは意志最終的に文書の最大サイズ制限を超えます。そして、あなたのデータモデルは壊れます。

さらに、配列が大きいほど、配列を含むドキュメントを操作するコストが高くなります(たとえば、アイテムを追加するための更新)。

たとえば、あなたの質問の説明ごとに40,000個の製品がある場合:これらを配列に格納した場合は、毎回配列をクエリする必要があります。また、製品の大きさ(ID、説明、画像へのリンクなど)はどれくらいですか?その情報が大きくなればなるほど、ドキュメントで消費されるストレージが増えます。

また、最大ドキュメントサイズが2MBの場合:製品数が40,000の場合、製品あたり約50バイトの容量しか確保できません。

一方、製品ごとに1つのドキュメントがある場合は、特定の製品を簡単に照会できます。最大の文書サイズを超えてしまう恐れなしに、非常に大きな製品説明ができます。別のドキュメント(製品ドキュメントの配列)内に製品ID(必要に応じてどこか)の配列を配置することができます。

費用、効率性などに関するご質問は、ちょっとベンチマークをして(そして挿入/読み取り/クエリごとのRUコストを調べることで)その部分を判断することができます。

関連する問題