1 つの膨大なドキュメント
すべてのコメントを 1 つのドキュメントに保存したい場合、いくつかの問題が発生します。
- 同時書き込み – 多くの読み取り操作と再試行操作を行う必要があります (最新の Etag ではありません)。
- コメントを追加するために大きなドキュメントを読み込んでいます
- 大きなドキュメントを読み込んでコメントを編集する
長所:
- 1回の操作ですべてのドキュメントと一緒にメインオブジェクトを削除できます
複数のコレクション
私が推測する最良のオプションは、コメントとメイン オブジェクトを 2 つのコレクションに分割し、すべてのコメントを ID でメイン オブジェクトにリンクすることです。このようにして、単一のコメントを追加および編集したり、クエリによってすべてのドキュメントを取得したりできます。このようにして、たとえばコメント コレクションに対してより複雑なクエリを実行できます。たとえば、ユーザーごとにすべてのコメントを取得します。
短所:
- すべてのコメントを含むメイン オブジェクトを削除すると、非常にコストがかかります (コメントを 1 つずつ削除する必要があります)。
OrderBy句はまだサポートされていないことに注意する必要がありますが、たとえば最後の 10 件のコメントなどを取得する際に問題が発生する可能性があります。
可能な代替
サポートしなければならない他の操作/クエリが何であるかわかりません。ただし、CRUD のみで、メイン オブジェクトのコメント リストを取得し、最後の x コメントを取得する可能性がある場合は、次の場合に Azure Table を使用することを検討できます。
- 行キー – 衝突を避けるための時間ベースの識別子 (Unix エポック) + GUID
- パーティション キー – メイン オブジェクト ID
このようにして、コメントエンティティを非常に高速に取得および更新し、時間ごとにクエリを実行できます