テナント容量とは、本質的にはテナントのサービス能力、すなわち計算能力とストレージ能力を指します。
OceanBaseデータベースはテナント容量の動的調整をサポートしており、単一ノードのサービス能力を調整することも、サービスノードの数を調整することも可能です。前者は垂直スケーリングに、後者は水平スケーリングに対応します。これは、従来のデータベースと比較したOceanBaseデータベースのアーキテクチャ上の利点の一つであり、使いやすい水平スケーラビリティにより、シングルマシンの容量上限を容易に突破できる点です。
前のセクションの説明から、テナントリソースは複数のUnitで構成されており、各Unitがノード上の一定の物理リソースを占有していることがわかります。Unitのリソース仕様とUnit数を調整し、業務トラフィックをUnit間で適切に分散することで、テナント容量を調整することができます。
スケーリングの実装方法によって、以下の2種類に分けられます:
垂直スケーリング
Unitのリソース仕様を調整することは、従来のデータベースにおける垂直スケーリングに相当します。
リソース仕様は、CPU、メモリ、ディスク容量、IOPSなど、一般的な物理リソース項目のサイズを定義します。リソース仕様を調整することで、テナントが単一ノード上で占有する物理リソースを調整し、テナント容量を調整します。リソース仕様の調整は、容量ボトルネックに対処するための最も効率的で便利な緊急手段であり、データの移動が不要で、秒単位で反映されます。各ノードには、テナントの緊急時の拡張用に一定の物理リソースを予約しておく必要があります。予約リソースが不足している場合は、同ノード上の他のテナントのリソース仕様を一時的に引き下げて物理リソースを解放することができます。リソース仕様を調整するスケーリング方式は、シングルマシンの容量上限に制限されます。OceanBaseデータベースの水平スケーラビリティはこのシナリオに適しており、シングルマシンの容量上限を容易に突破できます。
詳細な操作手順については、リソース仕様の調整によるテナントのスケーリングを参照してください。
水平スケーリング
テナントのUnit数と業務トラフィックのUnit間での分散を調整することは、OceanBase独自の水平スケーリング方式に相当します。具体的には、Unit NumberとPrimary Zoneを増やすことでサービスノードを追加し、テナント全体のサービス能力を向上させます。
Unit Numberの増加:該当テナントが配置されているZone内のUnit数が増加し、より多くのストレージリソースと計算リソースを利用できることを意味します。
詳細な操作手順については、Unit Numberの調整によるテナントのスケーリングを参照してください。
Primary Zoneの増加:該当テナントのLeaderのZone配置が増えることを意味します。Leaderは強整合性の読み書きトラフィックを担当するため、より多くの計算リソースを利用できます。垂直スケールアウトと比較して、水平スケールアウトはサービスノード数を増やすため、分散トランザクションによるパフォーマンス低下を避けるために、業務データのUnit間での分散を慎重に設計する必要があります。業務量がシングルマシンの容量上限を突破する見込みがある場合は、事前にデータシャーディングの設計を行う必要があります。データシャーディングでは、分散トランザクションを可能な限り回避する必要があります。
詳細な操作手順については、Primary Zoneの調整によるテナントのスケーリングを参照してください。