次の方法で共有


自動スケーリングを使用して Azure Cosmos DB のコンテナーとデータベースを作成する

Azure Cosmos DB を使用すると、データベースとコンテナーの標準 (手動) スループットまたは自動スケーリング スループットを構成できます。 自動スケーリングでは、ワークロードに合わせてスループット (RU/秒) が調整され、ハイ パフォーマンスとコスト効率が確保されます。

活用事例

自動スケーリングのプロビジョニング済みスループットは、変動するトラフィック パターンまたは予測できないトラフィック パターンを持つミッション クリティカルなワークロードに最適であり、ハイ パフォーマンスとスケールのためにサービス レベル アグリーメント (SLA) が必要です。 既定では、自動スケーリングは、最もアクティブなリージョンとパーティションに基づいてワークロードをスケーリングします。 リージョンとパーティション間で異なるワークロード パターンを持つ一様でないワークロードの場合、このスケーリングによって不要なスケールアップが発生する可能性があります。 動的スケーリングまたは動的自動スケーリングは、自動スケーリング機能を強化するものであり、リージョンごとおよびパーティションレベルごとの使用状況に基づいて、変動するワークロードを個別に効率よくスケーリングするのに役立ちます。 動的スケーリングは、ホット パーティションが頻繁に発生する場合や複数のリージョンがある場合にコストを節約するのに役立ちます。

自動スケールの利点

自動スケーリングのプロビジョニング スループットが構成された Azure Cosmos DB データベースとコンテナーには、次の利点があります。

  • 簡単: 自動スケーリングを使用すると、カスタム スクリプトや手動スケーリングが不要になり、RU/秒の管理が簡単になります。

  • スケーラブル: データベースとコンテナーでは、必要に応じて、プロビジョニング スループットが自動的にスケーリングされます。 クライアント接続やアプリケーションは中断されず、Azure Cosmos DB SLA への影響もありません。

  • コスト効率: 自動スケーリングでは、使用されていないときにスケールダウンすることで、RU/秒とコストが最適化されます。 ワークロードに必要なリソースに対してのみ 1 時間単位で支払います。 完全な Tmax を 1 か月に 66% 以下の時間だけ使用すると、自動スケーリングによってコストを節約できます。 動的スケーリングにより、高可用性を目的としたセカンダリ リージョンが追加されることでもコスト効率が向上します。各リージョンとパーティションは使用量に基づいて個別にスケーリングされるためです。 詳細については、「標準 (手動) および自動スケーリングのプロビジョニング済みスループットから選択する方法」を参照してください。

  • 高可用性: 自動スケーリング機能を備えたデータベースおよびコンテナーでは、グローバルに分散された耐障害性のある Azure Cosmos DB バックエンドが使用され、データの耐久性と可用性が確保されます。

自動スケーリングの活用例

自動スケーリングのユース ケースは次のとおりです。

  • 変動する予測不可能なワークロード: ワークロードの使用率が変動したり、急増を予測できなかったりする場合には、自動スケーリングを利用して、使用状況に基づいて自動的にスケールアップおよびスケールダウンすることができます。 たとえば、季節的なトラフィック パターンを持つ小売 Web サイト、一日の中で使用量の上下が大きい IoT ワークロード、ピーク使用量が時折発生する基幹業務アプリケーションなどがあります。 自動スケーリングを使用すると、ピーク時または平均容量のスループットを手動で割り当てる必要がなくなります。

  • 新しいアプリケーション: 新しいアプリケーションを開発していて、必要なスループット (RU/秒) がわからない場合は、自動スケーリングを使用すると、作業を簡単に開始できます。 自動スケーリングのエントリ ポイントである 100 から 1000 RU/秒で開始し、使用状況を監視して、時間の経過と共に適切な RU/秒を判断することができます。

  • 使用頻度の低いアプリケーション: 1 日、1 週間、あるいは 1 か月に数時間のみ使用されるアプリケーション (例えば、利用頻度の低いアプリ、ウェブサイト、ブログなど) をお持ちの場合 自動スケーリングでは、ピーク時の使用に対応できるよう容量が調整され、ピーク時が過ぎるとスケールダウンされます。

  • 開発およびテストのワークロード: 自身やチームで Azure Cosmos DB データベースとコンテナーを業務時間中は使うが、夜間や週末には必要ない場合、自動スケーリングにより、使っていないときに最小にスケールダウンすることで、コストを節約できます。

  • スケジュールされた運用ワークロード/クエリ: アイドル期間中に実行することを検討しているスケジュールされた一連の要求、操作、またはクエリがある場合には、自動スケーリングを利用して簡単に実行できます。 ワークロードが実行されると、スループットは必要な値に自動的にスケーリングされ、その後スケールダウンされます。

これらの問題に対するカスタム ソリューションを構築するには、かなりの時間が必要であり、アプリケーションの構成やコードが複雑になります。 自動スケーリングを利用すれば、上述したシナリオをすぐに実現でき、容量をカスタムまたは手動でスケーリングする必要がなくなります。

動的スケーリングのユース ケース

動的スケーリングのユース ケースには、次のような場合があります。

  • ディザスター リカバリーのために、トラフィックの多いプライマリ リージョンとセカンダリ パッシブ リージョンを持つデータベース ワークロード。
    • 動的スケーリングを使用する場合、複数のリージョンで高可用性を実現するほうがコスト効率が高くなります。 セカンダリ リージョンは、アイドル状態では個別に自動的にスケールダウンします。 また、セカンダリ リージョンは、アクティブになった場合や、プライマリ リージョンからの書き込みレプリケーション トラフィックを処理するときに自動的にスケールアップされます。
  • 複数リージョンのデータベース ワークロード
    • 多くの場合、これらのワークロードでは、一日の中での自然なトラフィックの増加と低下により、リージョン間での要求の分散が不均一になります。 たとえば、データベースは、グローバルに分散したタイムゾーンにおいて、営業時間中はアクティブな状態にあります。

自動スケーリングのスループットのしくみ

コンテナーとデータベースを自動スケーリングに構成するときは、必要な最大スループット Tmax を指定します。 Azure Cosmos DB では、0.1*Tmax <= T <= Tmax が実現されるように、スループット T がスケーリングされます。 たとえば、最大スループットを 20,000 RU/秒に設定すると、スループットは 2,000 から 20,000 RU/秒の間でスケーリングされます。 スケーリングは自動的かつ瞬時に行われるので、プロビジョニング済み Tmax を最大として、いつでも遅延なく使用できます。

料金は、その 1 時間でシステムがスケーリングした最大スループット T に対して、時間単位で請求されます。 動的スケーリングが有効になっている場合、スケーリングは各物理パーティションとリージョンでの RU/秒の使用量に基づいて行われます。 この課金方法により、各パーティションとリージョンが個別にスケーリングされるため、不要なスケールアップが回避され、一様でないワークロードのコスト削減につながる可能性があります。

自動スケーリングの最大スループット Tmax のエントリ ポイントは 1,000 RU/秒で、100 から 1000 RU/秒の間でスケーリングされます。 Tmax は 1000 RU/秒の増分で設定でき、値はいつでも変更できます。

たとえば、コレクションに 1000 RU/秒と 2 個のパーティションがある場合、各パーティションは最大 500 RU/秒にスケールアップできます。 1 時間のアクティビティでは、使用率は次のようになります。

リージョン パーティション スループット 稼働率 メモ
書き込み P1 <= 500 RU/秒 100% 書き込み操作の 50 RU/秒、読み取り操作の 450 RU/秒で構成される 500 RU/秒。
書き込み P2 <= 200 RU/秒 40% 読み取り操作のみで構成される 200 RU/秒。
読み取り P1 <= 150 RU/秒 30% 書き込みリージョンからレプリケートされた書き込みに使用する 50 RU/秒で構成される 150 RU/秒。 このリージョンの読み取り操作には、100 RU/秒が使用されます。
読み取り P2 <= 50 RU/秒 10%

動的スケーリングを使用しない場合、システムは、最もホットなパーティションに基づいてすべてのパーティションを均一にスケーリングします。 この場合、最もアクセスが集中しているパーティションは 100% の使用率であるため、書き込みリージョンと読み取りリージョンの両方で、すべてのパーティションが 1,000 RU/秒にスケーリングされ、合計のスループットは 2,000 RU/秒にスケーリングされることになります。

動的スケーリングでは、各パーティションとリージョンのスループットが個別にスケーリングされ、合計 900 RU/秒にスケーリングされます。これにより、実際のトラフィック パターンがより適切に反映され、コストが削減されます。

既存のリソースに対する自動スケーリングの有効化

Azure portalCLI、または PowerShell を使用して、既存のデータベースまたはコンテナーで自動スケーリングを有効にできます。 自動スケーリングと標準 (手動) のプロビジョニング済みスループット間の切り替えは、いつでも行うことができます。 詳しくは、こちらのドキュメントをご覧ください。

自動スケーリングのスループットとストレージ制限

Tmax の値に応じて、データベースまたはコンテナーでは合計 0.1 * Tmax GB を保存します。 このストレージ量に達すると、アプリケーションに影響を与えることなく、新しいストレージ値に基づいて最大 RU/秒が自動的に増加します。

たとえば、最大 RU/秒が 50,000 RU/秒 (5000 から 50,000 RU/秒の間でスケーリング) の場合、最大 5,000 GB のデータを格納できます。 6,000 GB に達するなど、ストレージが 5,000 GB を超える場合、新しい最大 RU/秒は 60,000 RU/秒になります (6000 から 60,000 RU/秒の間でスケーリングされます)。

自動スケーリングによるデータベース レベルのスループットを使用する場合は、100 GB のストレージを超えない限り、最初の 25 個のコンテナーによって、自動スケーリングの最大の 1000 RU/秒 (100 から 1000 RU/秒の間でスケーリングされます) を共有できます。 詳しくは、こちらのドキュメントをご覧ください。

動的スケーリングの有効化

動的スケーリングは、2024 年 9 月 25 日以降に作成されたすべての Azure Cosmos DB アカウントに対して既定で有効になります。 古いアカウントでこの機能を有効にするには、次に示すように、Azure PowerShell、CLI、REST API を使用してプログラム から、または Azure portal の機能ウィンドウから行えます。

  1. Azure portal で Azure Cosmos DB アカウントに移動します。

  2. [機能] ページを選択します。

  3. [動的スケーリング (リージョンごとおよびパーティションごとの自動スケーリング)] 機能を見つけて有効にします。

    Azure portal の **[動的スケーリング (リージョンごとおよびパーティションごとの自動スケーリング)]** 機能のスクリーンショット。

    重要

    この機能はアカウント レベルで有効になっているため、アカウント内のすべての自動スケーリング コンテナーと自動スケーリングの共有スループット データベースには、この機能が自動的に適用されます。 この機能を有効にしても、手動スループットを使用しているアカウント内のリソースには影響しません。 動的スケーリングを利用するには、手動リソースを自動スケーリングに変更する必要があります。 この機能を有効にしても、ダウンタイムやパフォーマンスに影響はありません。 この機能は、サーバーレス アカウントには適用されません。 この機能は、すべてのクラウドでサポートされています。

メトリックの監視

次のメトリックを使用して、自動スケーリングと動的スケーリングを監視できます。

メトリックの名前 定義 メトリックの使用方法
プロビジョニングされたスループット 1 時間の間にスケーリングされた最も高い RU/秒の集計値を示し、その時間にスケーリングされた RU/秒の合計を表します。 Provisioned Throughput メトリックを使用して、各時間に課金される RU/秒を確認できます。 自動スケーリングでは、各時間の最もアクティブなパーティションに基づいて課金され、同じ設定がすべてのパーティションとリージョンに適用されます。 動的オートスケールでは、各パーティション レベルとリージョン レベルで、各時間にスケーリングされた最も高い RU/秒の集計値に対して課金されます。
Normalized RU Consumption (正規化された RU 消費量) このメトリックは、各パーティション レベルおよびリージョン レベルでプロビジョニングされた RU/秒と消費された RU/秒の比率を表します。 このメトリックを使用して、オートスケールの最大スループットが過少にプロビジョニングされているか、過剰にプロビジョニングされているかどうかを判断します。

メトリック値が常に 100 % であり、アプリケーションでレート制限 (429 エラー コード) が表示される場合は、さらに RU/秒が必要である可能性があります。 これに対し、このメトリック値が低く、レート制限がない場合は、RU/秒を最適化してスケールダウンする余地がある可能性があります。 コード 429 レート制限エラーを解釈してデバッグする方法の詳細を確認してください。

Normalized RU Consumption メトリックには、セカンダリ リージョンの読み取りトラフィックに加えて、プライマリ リージョンからの書き込みレプリケーション トラフィックが原因でセカンダリ リージョンで消費された RU/秒が反映されます。
自動スケーリングの RU 動的オートスケールが有効なアカウントに対してのみ、各パーティション レベルとリージョン レベルで動的にスケーリングされたプロビジョニング済みスループットを表示します。 このメトリックを使用して、各リージョンのパーティションの使用状況に基づいて個別にスケーリングする方法を確認できます。

Azure Monitor メトリック (Autoscaled RU) を使用して、パーティションとリージョン間で新しい自動スケーリングがどのように適用されているかを分析します。 目的のデータベース アカウントとコンテナーにフィルターを適用し、物理パーティション ID メトリックでフィルター処理または分割します。 このメトリックは、さまざまなリージョンのすべてのパーティションを示します。

重要

容量を管理するには、Azure Cosmos DB のネイティブ動的スケーリング機能の使用をお勧めします。 ただし、必要に応じて、Azure Monitor の 正規化された RU 従量課金メトリック を使用して、プログラムによるスケーリングの決定を行うことができます。 Azure Cosmos DB ソフトウェア開発キット (SDK) で ReadThroughputAsync() 呼び出しを使用して ProvisionedThroughput 値を取得したり、Azure Monitor で ProvisionedThroughput メトリックを使用したりすることは推奨されず、不正確な結果につながります。 これらのメトリックは、遅延を伴う課金スループットを表し、スケーリングの決定には使用しないでください。

比較 – 手動または自動スケーリングのスループットで構成されたコンテナー

詳細については、標準 (手動) と自動スケーリングのスループットの選択に関するこの ドキュメント を参照してください。

標準 (手動) のスループットを利用したコンテナー 自動スケーリングのスループットを利用したコンテナー
プロビジョニング スループット (RU/秒) 手動でプロビジョニングします。 ワークロードの使用パターンに基づいて、自動的に瞬時にスケーリングされます。
要求/操作のレート制限 (429) 使用量がプロビジョニング済みの容量を超えた場合、発生する可能性があります。 構成した自動スケーリングのスループットの範囲内で RU/秒を使用する場合は、発生しません。
容量計画 容量を計画し、必要なスループットを正確に設定する必要があります。 容量の計画と管理は、システムによって自動的に処理されます。
料金 1 時間あたりの標準 (手動) の RU/秒レートを使用して、手動でプロビジョニングされた RU/秒に対して、時間単位で料金を支払います。 システムによって 1 時間の枠内でスケールアップされた最大 RU/秒に対して、時間単位で料金を支払います。

単一の書き込みリージョンのアカウントの場合、1 時間あたりの自動スケーリングの RU/秒レートを使用して、使用された RU/秒に対して時間単位で料金を支払います。

書き込みリージョンが複数あるアカウントの場合、自動スケーリングに対する追加料金は発生しません。 同じ 1 時間あたりの複数リージョン書き込み RU/秒レートを使用して、使用されたスループットに対して時間単位で料金を支払います。

最適なワークロードの種類 予測可能で安定したワークロード 予測不可能で変動するワークロード

プロビジョニングされた標準のスループットから自動スケーリングへの移行

多くのリソースを標準プロビジョニング済みスループットから自動スケーリングに移行するユーザーは、Azure CLI スクリプトを使用して、Azure サブスクリプション内のすべてのスループット リソースを自動スケーリングに移行できます。