翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon DocumentDB Serverless の仕組み
トピック
概要:
Amazon DocumentDB Serverless は、最も変化が激しく、要求の厳しいワークロードに適しています。用途の例としては、データベースの使用負荷が短時間の間だけ増大し、その後に軽いアクティビティが長時間続くか、またはアクティビティがまったく発生しなくなるケースが挙げられます。例えば、定期的に販売促進イベントを行う小売り、ゲーム、スポーツなどのウェブサイト、必要なときにレポートを作成するレポートデータベースなどがあります。また、開発やテスト環境、また、新しいアプリケーションでは急激に利用が増加することがあります。他にも多くが考えられますが、このようなケースに対してプロビジョニングされたモデルを使用しても、事前に容量を正しく指定できるとは限りません。また、過剰なプロビジョニングを行い、使用しない容量が生じた場合には、コストが高くなる可能性もあります。
一方で、プロビジョン済み DocumentDB クラスターは、安定したワークロードに適しています。プロビジョン済みクラスターでは、メモリサイズ、CPU パワー、I/O 帯域幅などが事前定義されたインスタンスクラスを選択します。ワークロードが変更された場合、ライターとリーダーのインスタンスクラスを手動で変更します。プロビジョン済みモデルは、消費パターンが予想され、事前に容量を調整できる場合に有効です。クラスター内のライターとリーダーのインスタンスクラスを変更しながら、短時間の停止の発生が許容される場合は有効に機能します。
DocumentDB サーバーレスは、拡張が瞬時に行われるサーバーレスクラスターをサポートするために、ゼロから設計されました。DocumentDB サーバーレスは、プロビジョニングされたライターやリーダーと同じレベルのセキュリティと分離を提供するように設計されています。このような側面は、マルチテナントのサーバーレスクラウド環境では非常に重要です。データベースのワークロードの変更に迅速に対応できるように、動的スケーリングメカニズムにはオーバーヘッドがほとんどありません。また、処理需要の劇的な増加に対応するための、十分な能力も備わっています。
DocumentDB サーバーレスを使用することにより、各ライターとリーダーにある特定のデータベース容量の制約を受けずに DocumentDB クラスターを作成できます。お客様は、最小容量と最大容量の範囲を指定します。DocumentDB では、その容量範囲内のクラスター内の各 DocumentDB サーバーレスライターまたはリーダーをスケーリングします。各ライターまたはリーダーによって動的にスケーリングできるマルチ AZ クラスターを使用することで、動的スケーリングと高可用性を活用できます。
DocumentDB サーバーレスでは、最小容量と最大容量の仕様に基づいて、データベースリソースを自動的にスケーリングします。ほとんどのスケーリングイベントのオペレーションは、ライターまたはリーダーが同じホスト上で保持されるため、高速にスケーリングします。DocumentDB サーバーレスライターまたはリーダーが、あるホストから別のホストに移動するまれなケースでも、DocumentDB サーバーレスでは自動的に接続を管理します。データベースクライアントアプリケーションのコードやデータベースの接続文字列を変更する必要はありません。
DocumentDB サーバーレスでは、プロビジョン済みクラスターと同様に、ストレージ容量とコンピューティング性能は別々になっています。DocumentDB サーバーレス容量やスケーリングに言及した場合、増減するのは常にコンピューティング性能です。したがって、CPU やメモリの容量がスケールダウンしても、クラスターには数テラバイトのデータを格納できます。
プロビジョニングやデータベースサーバーを管理する代わりに、データベース容量を指定します。各 DocumentDB サーバーレスライターまたはリーダーの実際の容量は、ワークロードによって時間とともに変化します。このメカニズムの詳細については、「Amazon DocumentDB Serverless スケーリング」を参照してください。
Amazon DocumentDB クラスターの設定
Amazon DocumentDB サーバーレスクラスターごとに、DocumentDB サーバーレスの容量およびプロビジョン済み容量、またはその両方を自由に組み合わせて選択できます。
混在設定クラスターと呼ばれる DocumentDB サーバーレスとプロビジョン済み容量の両方を含むクラスターを設定できます。例えば、DocumentDB サーバーレスライターで利用可能な容量よりも、多くの読み取り/書き込み容量が必要だとします。この場合、非常に大きいプロビジョン済みライターを使用してクラスターをセットアップできます。その後も、リーダーに DocumentDB サーバーレスを使用できます。また、クラスターの書き込みワークロードは変化しているが、読み取りワークロードは安定しているとします。この場合、クラスターに 1 つの DocumentDB サーバーレスライターと 1 つまたは複数のプロビジョン済みリーダーをセットアップできます。
DocumentDB サーバーレスによってすべての容量が管理されるクラスターをセットアップすることもできます。これを行うには、新しいクラスターを作成し、最初から DocumentDB サーバーレスを使用します。または、DocumentDB サーバーレスで既存のクラスター内でプロビジョン済みのすべての容量を置き換えることができます。DocumentDB サーバーレスで新しいクラスターを作成するか、または既存のクラスターを DocumentDB サーバーレスに切り替える手順の詳細については、「Amazon DocumentDB Serverless を使用するクラスターの作成」および「Amazon DocumentDB Serverless への移行」を参照してください。
クラスターで DocumentDB サーバーレスをまったく使用しない場合、クラスター内のすべてのライターとリーダーはプロビジョン済みになります。これは、ほとんどのユーザーがよく知っている、最も一般的な種類のクラスターです。プロビジョン済み容量は一定です。料金は比較的簡単に予測できます。ただし、必要な容量を事前に予測する必要があります。場合によっては、予測が不正確だったり、容量のニーズが変わったりすることもあります。このような場合、クラスターがプロビジョニングされない (希望よりも遅い)、またはオーバープロビジョニング (必要以上に高価) になる可能性があります。
Amazon DocumentDB Serverless スケーリング容量
Amazon DocumentDB Serverless の測定単位は、DocumentDB キャパシティーユニット (DCU) です。DocumentDB サーバーレススケーリング容量は、プロビジョニングされたクラスターに使用するインスタンスクラスに関連付けられていません。
各 DCU では、約 2 ギビバイト (GiB) のメモリと、対応する CPU、ネットワークが組み合わせられています。この単位を使用して、データベース容量の範囲を指定します。ServerlessDatabaseCapacity および DCUUtilization CloudWatch メトリクスは、データベースが実際に使用している容量と、その容量が指定された範囲内のどこにあるかを判断するのに役立ちます。
いつどんな場合でも、各 DocumentDB サーバーレスライターまたはリーダーは容量を持っています。容量は、DCU を表す浮動小数点数です。容量は、ライターまたはリーダーがスケーリングするごとに増減します。この値は毎秒測定されます。DocumentDB サーバーレスを使用する予定の各クラスターに、各 DocumentDB サーバーレスライターまたはリーダーの間でスケーリングできる最小容量および最大容量の値である容量範囲を定義します。クラスターの各 DocumentDB サーバーレスライターまたはリーダーでは、容量範囲は同じです。各 DocumentDB サーバーレスライターまたはリーダーは、それぞれの範囲内の容量を持っています。
DocumentDB サーバーレスは、容量範囲が 0.5~256 DCU の DocumentDB 5.0.0 以降でサポートされています。
定義できる DocumentDB サーバーレスの最小容量は 0.5 DCU です。サポートされている最大容量値以下であれば、それ以上の数値を指定できます。最小容量を小さい量に設定することで、低ロードのクラスターでは最小限のコンピューティングリソースを消費できます。同時に、直ちに接続を受け入れ、ビジーになったらスケールアップする準備ができています。
各ライターまたはリーダーがバッファプール内のアプリケーションのワーキングセットを保持できる最小値に設定することをお勧めします。これにより、アイドル中にバッファプールの内容が破棄されることはありません。スケーリング容量範囲を選択する際のすべての考慮事項については、「DocumentDB サーバーレスクラスターのスケーリング容量範囲の選択」を参照してください。
マルチ AZ 配置でのリーダーの設定方法に応じて、その容量はライターの容量に関連付けることも、独立させることもできます。これを行う方法については、「サーバーレスリーダーの昇格階層の表示と変更」を参照してください。
DocumentDB サーバーレスのモニタリングでは、クラスター内のライターとリーダーの容量値を経時的に測定します。データベースが最小容量にスケールダウンしない場合は、最小値の調整やデータベースアプリケーションの最適化などのアクションを実行できます。データベースが常に最大容量に達している場合は、最大容量を増やすなどのアクションを実行できます。また、データベースアプリケーションを最適化し、クエリのロードをより多くのリーダーに分散させることもできます。
DocumentDB サーバーレス容量の料金は DCU 時間で測定されます。DocumentDB サーバーレス料金の計算方法については、「Amazon DocumentDB の料金
適切な最小と最大の DCU 値の選択の詳細については、「DocumentDB サーバーレスクラスターのスケーリング容量範囲の選択」を参照してください。指定する最小と最大の DCU 値は、一部の Amazon DocumentDB インスタンスの制限にも影響します。容量範囲とインスタンスの制限間のやり取りの詳細については、「Amazon DocumentDB Serverless インスタンスの制限」を参照してください。
Amazon DocumentDB Serverless スケーリング
各 DocumentDB サーバーレスのライターやリーダーでは、Amazon DocumentDB は、CPU、メモリ、ネットワークなどのリソースの使用率を継続的に追跡しています。これらの測定値を総称してロードと呼びます。ロードには、アプリケーションによって実行されるデータベースオペレーションが含まれます。また、データベースサーバーと Amazon DocumentDB 管理タスクのバックグラウンド処理も含まれます。容量がこれらのいずれかによって制約されている場合、DocumentDB サーバーレスはスケールアップします。DocumentDB サーバーレスは、解決できるパフォーマンスの問題を検出した場合も、そのような解決を行うことでスケールアップします。「Amazon DocumentDB Serverless のモニタリング」の手順で、リソース使用率と DocumentDB サーバーレスのスケーリングの影響をモニタリングできます。
ロードは、クラスターのライターとリーダーによって異なる場合があります。ライターはライターオペレーションを処理し、クラスターボリュームに対するすべてのデータ変更を実行します。リーダーは読み取り専用リクエストを処理できます。
スケーリングは、データベースの DocumentDB サーバーレス容量を増減するオペレーションです。DocumentDB サーバーレスでは、各ライターとリーダーには、DCU 単位で測定される独自の現在の容量値があります。DocumentDB サーバーレスは、現在の容量が低すぎて負荷を処理できない場合、ライターまたはリーダーをより高い容量にスケールアップします。ライターまたはリーダーの現在の容量が必要以上に大きい場合、小さい容量にスケールダウンします。
DocumentDB サーバーレスは、容量を段階的に増やすことができます。ワークロードの需要がライターまたはリーダーの現在のデータベース容量に達し始めると、DocumentDB サーバーレスはそのライターまたはリーダーの DCU の数を増やします。DocumentDB サーバーレスは、消費されるリソースで最高のパフォーマンスを実現するために必要なだけの増分で容量をスケーリングします。スケーリングは 0.5 DCU という小さい増分で行われます。現在の容量が大きいほど、スケーリングの増分が大きくなり、そのため、スケーリングがより高速になります。
DocumentDB サーバーレスのスケーリングは高頻度、詳細、無停止であるため、 AWS マネジメントコンソールで離散的なイベントが発生することはありません。代わりに、serverlessDatabaseCapacity や DCUUtilization のような Amazon CloudWatch メトリクスを測定し、その最小値、最大値、平均値を経時的に追跡できます。DocumentDB サーバーレスのモニタリングの詳細については、「Amazon DocumentDB Serverless のモニタリング」を参照してください。
スケールアップまたはスケールダウンは、以下が原因で発生する可能性があります。
メモリ使用率
CPU 使用率
ネットワーク使用率
ストレージの使用率
DocumentDB サーバーレスインスタンスのスケールアップ/スケールダウンの原因をモニタリングできます。詳細については、「Amazon DocumentDB Serverless のモニタリング」を参照してください。
リーダースケールは、関連するライターと同時に作成するか、ライターから独立して作成するかを選択できます。これを行うには、そのリーダーの昇格階層を指定します。
昇格階層 0 および 1 の DocumentDB サーバーレスのリーダーは、ライターと同じタイミングでスケーリングします。このスケーリング動作によって、優先階層 0 および 1 のリーダーは可用性に最適です。これは、フェイルオーバー時にライターからワークロードを引き継ぐために、常に適切な容量に合わせてサイズ調整されているためです。
昇格階層 2~15 のリーダーは、ライターとは独立してスケーリングできます。各リーダーは、クラスターに指定した DCU の最小値と最大値の範囲内に収まります。リーダーが関連するライター DB とは独立してスケーリングすると、ライターが大量のトランザクションを処理し続けている間に、リーダーがアイドル状態になってスケールダウンする場合があります。下位の昇格階層で他のリーダーが利用できない場合でも、フェイルオーバーターゲットとして利用できます。ただし、ライターに昇格した場合は、ライターのワークロード全体を処理するためにスケールアップが必要になる場合があります。
サーバーレスインスタンスの昇格階層の表示と変更の詳細については、「サーバーレスリーダーの昇格階層の表示と変更」を参照してください。
DocumentDB サーバーレスのスケーリングは、データベース接続が開いている間、トランザクションが進行中の間などに発生する可能性があります。DocumentDB サーバーレスは、スケーリングを開始するためにクワイエットポイントを待機しません。スケーリングによって、進行中のデータベースオペレーションが中断されることはありません。
ワークロードで単一のライターと単一のリーダーで使用できるよりも多くの読み取り容量が必要な場合、クラスターに 複数の DocumentDB サーバーレスのリーダーを追加できます。各 DocumentDB サーバーレスのリーダーは、クラスターに指定した最小から最大の容量値でスケーリングできます。クラスターのリーダーエンドポイントを使用して、読み取り専用のセッションをリーダーに送信し、ライターのロードを軽減できます。
DocumentDB サーバーレスがスケーリングを実行するどうか、また、スケーリング開始後の速度は、クラスターの最小および最大 DCU 設定によって異なります。さらに、リーダーとライターが一緒にスケーリングするように設定されているか、ライターとは独立してスケーリングするように設定されているかによって異なります。スケーリング設定の詳細については、「Amazon DocumentDB Serverless スケーリング設定」を参照してください。
アイドル状態 (0.5 DCU)
Amazon DocumentDB Serverless のライターまたはリーダーがアイドル状態のとき、クラスターの MinCapacity が 0.5 に設定されている場合、DocumentDB サーバーレスインスタンスはアイドル状態の 0.5 DCU へのスケールダウンをサポートします。
アイドル状態では、DocumentDB サーバーレスインスタンスには、ほとんどの本稼働ワークロードをサポートするのに十分な CPU コンピューティング容量はありませんが、新しいワークロードをサポートするために迅速にスケールアップする準備ができています。アイドル状態では、DocumentDB サーバーレスインスタンスには通常、少なくとも 1.0~2.5 DCU が必要です。したがって、DocumentDB サーバーレスインスタンスがアイドル状態から非アイドル状態にスケールアップすると、1.0~2.5 DCU (または低い場合は MaxCapacity の値) に直接スケールアップされます。
アイドル状態のときに 0.5 DCU へのスケールダウンをサポートするために、MinCapacity が 1.0 DCU 以下に設定されている場合、インスタンス制限には上限が設定されます。MinCapacity 設定によって制限がどのように影響を受けるかの詳細については、「Amazon DocumentDB Serverless インスタンスの制限」を参照してください。