Azure DocumentDB のクエリ制限引き上げのお知らせ

このポストは、9 月 28 日に投稿された Azure DocumentDB raises Query limits の翻訳です。

このたび、DocumentDB のクエリの機能強化が発表されました。最新バージョンのサービスでは DocumentDB のクエリの制限が下記のように引き上げられています。

  • クエリあたりの AND 句の最大数が 20 に引き上げられました。
  • クエリあたりの OR 句の最大数が 10 に引き上げられました。
  • クエリあたりの JOIN 句の最大数が 5 に引き上げられました。
  • クエリあたりの UDF の最大数が 2 に引き上げられました。
  • 1 つのクエリ ページに戻すことが可能なアイテム数の最大値が無制限になりました。

DocumentDB の制限

リレーショナル データベースに慣れている方の中には、なぜ DocumentDB には制限があるのかという疑問を持つ方も多いのではないでしょうか。Azure DocumentDB は何よりもスケール性を優先した設計となっており、この制限は安定して反復可能なパフォーマンスを低コストで提供するための対策です。DocumentDB アカウントで実行される他の負荷や同じマシン上の別アカウントと関係なく、すべてのクエリは同量のリソースを消費します。その量は要求単位 (RU) として表されます。上記の制限は、すべての DocumentDB コレクションの操作を、割り当てられたシステム リソースの予算内で確実に実行するためのガードレールの役割を果たしています。

マイクロソフトでは、これらの制限を引き上げるためにユース ケースやお客様からのフィードバックを継続的に評価し、使用状況を監視しています。今回の制限緩和により、お客様のアプリケーションの活用が拡大することを期待しています。また、今回の新たな制限を超える範囲での運用が必要なお客様は、サポートまでご連絡ください

1 つのクエリに 20 個まで AND 句を追加できるため、下図のように従来よりも強力なクエリが実行可能になります。

 

ページあたりの最大アイテム数の制限の引き上げ

現在 DocumentDB を使用している方にとっては、「ページあたりの最大アイテム数」の制限が引き上げられたため、クエリのパフォーマンスの調整がしやすくなりました。DocumentDB SDK および REST API では既定のページ サイズ (.NET の FeedOptions.MaxItemCount (英語) プロパティ) として 1 ページあたりのアイテム数が 100 個に制限されていて、その値は最大で 1,000 個まで設定できました。今回の変更ではこの値を 10,000 などのさらに大きな値に設定することが可能で、また -1 に設定するとこの制限が撤廃され、可能な限り多くのアイテムを戻すことができるようになります。

ページあたりのアイテム数の制限を撤廃する方法

 

ページあたりのアイテム数の制限を -1 に設定すると、クエリの結果取得時に発生するネットワーク ラウンド トリップ数が最小化されてクエリのレイテンシが低減します。またラウンド トリップの際に発生する反復的な処理 (RU) が最小化されスループットが向上するというメリットが得られます。この場合、クエリに対して応答のサイズおよびコレクションのスループット能力の範囲で許容される限り多数の結果が返されます。

ぜひお試しください

今回の変更はサービス側で実施されるため、新しい SDK のダウンロードなしで制限の引き上げが適用されます。こちらのページでお好みのサポート対象 SDK をダウンロードし、DocumentDB でのクエリをご利用ください。ご意見やご不明な点がありましたら、Stack Overflow の開発者フォーラム (英語) へお寄せいただくか、または DocumentDB エンジニアリング チームとの個別チャットをご予約ください (英語)

また、Twitter アカウントの @DocumentDB をフォローして、DocumentDB の最新のニュースや機能をいち早くチェックしてください。