Azure DocumentDB は、クラスターを垂直方向と水平方向の両方にスケーリングする機能を提供します。 コンピューティング クラスターレベルとストレージ ディスクは機能的には相互に依存しますが、コンピューティングとストレージのスケーラビリティとコストは切り離されます。
垂直スケーリング
垂直方向のスケーリングには、次の利点があります。
- アプリケーション チームは、データを論理的にシャーディングするための明確なパスを常に持っているとは限りません。 さらに、論理シャーディングはコレクションごとに定義されます。 複数のハードされていないコレクションを含むデータセットでは、データをパーティション分割するためのデータ モデリングがすぐに面倒になる可能性があります。 クラスターをスケールアップするだけで、アプリケーションの増大するストレージとコンピューティングのニーズを満たしながら、論理シャーディングの必要性を回避できます。
- 垂直方向のスケーリングでは、データの再調整は必要ありません。 物理シャードの数は変わらず、クラスターの容量のみが増加し、アプリケーションに影響はありません。
- スケールアップとスケールダウンは、サービスを中断せず、ダウンタイムがゼロの操作です。 アプリケーションの変更は必要なく、安定した状態の操作を継続できます。
- コンピューティング リソースは、アクティビティが少ない既知の時間枠の間にスケールダウンすることもできます。 もう一度スケール ダウンすると、少ない物理シャード間でデータを再調整する必要がなくなり、サービスを中断しなくてもダウンタイムがゼロになります。 ここでも、クラスターをスケールダウンした後にアプリケーションを変更する必要はありません。
- 最も重要なのは、コンピューティングとストレージを個別にスケーリングできることです。 より多くのコアとメモリが必要な場合は、ディスク サイズをそのままにしておき、クラスター層をスケールアップできます。 同様に、より多くのストレージと IOPS が必要な場合は、クラスター層をそのまま残して、ストレージ サイズを個別にスケールアップできます。 必要に応じて、コンピューティングとストレージの両方を個別にスケーリングして、コンポーネントの弾力性要件が他のコンポーネントに影響を与えることなく、各コンポーネントの要件を個別に最適化できます。
水平スケーリング
最終的に、アプリケーションは垂直方向にスケーリングするだけでは不十分な時点まで拡張されます。 ワークロードの要件は、最大のクラスター層の容量を超えて増加する可能性があり、最終的にはより多くのシャードが必要になります。 Azure DocumentDB での水平方向のスケーリングには、次の利点があります。
- 論理的にシャード化されたデータセットでは、基になる物理シャード間でデータのバランスを取るためにユーザーの介入は必要ありません。 サービスは、論理シャードを物理シャードに自動的にマップします。 ノードが追加または削除されると、データはデータベースの内部で自動的に再調整されます。
- 要求は、クエリ対象のデータのハッシュ範囲を所有する関連する物理シャードに自動的にルーティングされます。
- Geo分散クラスターには、同種のマルチノードの構成があります。 したがって、論理的なシャードマッピングと物理シャードマッピングは、クラスターのプライマリリージョンとレプリカリージョン間で一貫しています。
コンピューティングとストレージのスケーリング
Compute リソースとメモリ リソースは、ディスク IOPS よりもAzure DocumentDB の読み取り操作に影響します。
- 読み取り操作では、まずコンピューティング レイヤー内のキャッシュを参照し、キャッシュからデータを取得できなかった場合はディスクにフォールバックします。 1 秒あたりの読み取り操作の速度が高いワークロードでは、クラスター層をスケールアップして CPU リソースとメモリ リソースを増やすと、スループットが向上します。
- 読み取りスループットに加えて、読み取り操作あたりのデータ量が多いワークロードでも、クラスターのコンピューティング リソースをスケーリングするメリットがあります。 たとえば、メモリが多いクラスター層では、ドキュメントあたりのペイロード サイズが大きくなり、応答あたりのドキュメント数が多くなります。
Disk IOPS は、Azure DocumentDB での書き込み操作に、コンピューティング リソースの CPU とメモリの容量よりも大きく影響します。
- 書き込み操作では、常にデータがディスクに保持されます (読み取りを最適化するためにメモリにデータを保持することに加えて)。
- Azure DocumentDB では、Premium SSD v2 ディスクを使用してシャードあたり最大 80,000 IOPS と 1.2 GB/秒がサポートされ、書き込み負荷の高いワークロード (特に大規模な場合) にメリットがあります。
ストレージの負荷の高いワークロードと大きなディスク
クラスター層あたりの最小ストレージ要件なし
前述のように、ストレージ リソースとコンピューティング リソースは、課金とプロビジョニングのために分離されます。 これらは凝集単位として機能しますが、個別にスケーリングできます。 M30 クラスター層には、32 TB のディスクをプロビジョニングできます。 同様に、M200 クラスター層では、ストレージとコンピューティングの両方のコストを最適化するために 32 GB のディスクをプロビジョニングできます。
大容量ディスク (32 TB 以上) を使用した TCO の削減
通常、NoSQL データベースでは、物理シャードあたりのストレージは 4 TB に制限されます。 Azure DocumentDB では、最大 8 倍の容量と 32 TB のディスクが提供されます。 ストレージの負荷の高いワークロードの場合、物理シャードあたり 4 TB のストレージ容量には、ワークロードのストレージ要件を維持するために大量のコンピューティング リソースが必要です。 コンピューティングはストレージよりもコストが高く、サービスの容量制限によりコンピューティングが過剰にプロビジョニングされると、コストが急速に膨らむ可能性があります。
200 TB のデータを含むストレージの負荷の高いワークロードについて考えてみましょう。
| シャードあたりのストレージ サイズ | 200 TB を維持するために必要な最小シャード数 |
|---|---|
| 4 TiB | 50 |
| 32テビバイト (TiB) | 7 |
コンピューティング要件の削減により、ディスクのサイズが大きくなると大幅に減少します。 ワークロードのスループット要件を維持するために必要な物理シャードの最小数を超える場合がある一方で、シャードの数を 2 倍または 3 倍にしても、ディスクが小さい 50 シャード クラスターよりもコスト効率が高くなります。
大きなディスクでの記憶域の階層化をスキップする
ストレージ負荷の高いシナリオでのコンピューティング コストに対する即時の対応は、データを "階層化" することです。 トランザクション データベース内のデータは、最も頻繁にアクセスされる "ホット" データに制限され、より大きな量の "コールド" データはコールド ストアにデタッチされます。 これにより、運用が複雑になります。 パフォーマンスも予測不可能であり、アクセスされるデータ層によって異なります。 さらに、システム全体の可用性は、ホット データ ストアとコールド データ ストアの両方を組み合わせた回復性に依存します。 サービス内の大規模なディスクでは、ストレージの負荷の高いワークロードのコストが最小限に抑えられるため、階層化ストレージは必要ありません。