マルチクラウド環境においてユーザーによりコスト効率の高いデータベースサービスを提供するため、OceanBaseデータベースは汎用オブジェクトストレージを基盤として、シェアードストレージ(Shared-Storage、SS)モードのクラスタアーキテクチャを実装しています。シェアードナッシング(Shared-Nothing、SN)モードでは、システムはホットデータをメモリ内にキャッシュしてパフォーマンスを向上させます。一方、SSモードでは、メモリキャッシュに加えて、ローカル永続化キャッシュも導入され、セカンダリホットデータをキャッシュします。
上図において:
メモリキャッシュ:主に最もホットなデータをキャッシュし、マイクロブロックやインデックスデータなどが含まれます。
永続化キャッシュ:ストレージ媒体はローカル物理ディスクまたはクラウドディスクであり、セカンダリホットデータをキャッシュするために使用されます。その主な機能は以下の通りです:
オブジェクトストレージから読み取ったデータをキャッシュします。
データのプリフェッチ。例えば、テーブル全体のスキャン時に、読み取る予定のデータを事前にローカルにキャッシュします。
プリヒート。メジャーコンパクションやバージョン切り替え前に、ホットデータをローカルキャッシュにロードします。短期間のダウンタイム後の再起動時にも、永続化キャッシュは有効なままであり、災害復旧シナリオにおけるパフォーマンスのジッターを軽減します。
同時に、RTO時間を保証するため、ローカル永続化キャッシュへのアクセスシーケンスはリアルタイムでフォロワーフォロワーに同期され、リーダーフォロワーとフォロワーフォロワーはほぼ同一のキャッシュデータを保持します。レプリケーション移行時にも、ローカルキャッシュデータが宛先に持ち込まれ、レプリケーション移行後のパフォーマンスを保証します。
書き込みキャッシュ。ローカルディスクの低遅延を活用し、書き込みキャッシュとして機能し、メタファイル、最新のclog、miniダンプなど、重要なローカル状態を記録します。
オブジェクトストレージ:システムのすべてのデータを格納し、クラスタ共有のclogやすべてのベースラインデータ、およびローカル物理ディスクやクラウドディスクの空き容量が不足した場合に書き込まれるノード専用データ(増分データ、一時ファイルなど)を含みます。オブジェクトストレージの容量はほぼ無限ですが、アクセス遅延が大きいです。
上記のマルチレベルキャッシュにより、ホットデータへのアクセスパフォーマンスが保証され、オブジェクトストレージを基盤としてTPとAPの両方のビジネス要件を同時に満たす製品形態を提供できます。