OceanBaseデータベースは、一般的なオブジェクトストレージを基盤として、マルチクラウド環境においてユーザーにコストパフォーマンスに優れたデータベースサービスを提供するために、共有ストレージ(Shared-Storage、SS)モードのクラスタアーキテクチャを実現しています。共有なし(Shared-Nothing、SN)モードでは、システムはホットデータをメモリにキャッシュし、パフォーマンスを向上させます。しかし、SSモードでは、メモリキャッシュに加えて、ローカル永続キャッシュも導入されており、セカンドホットデータをキャッシュします。
上記図では:
メモリキャッシュ:主に最もホットなデータをキャッシュし、マイクロブロックやインデックスデータなどを含みます。
永続キャッシュ:ストレージメディアはローカル物理ディスクまたはクラウドディスクであり、セカンドホットデータをキャッシュするために使用されます。その主な機能には以下のものがあります:
オブジェクトストレージから読み取ったデータをキャッシュします。
データのプリフェッチ。例えば、テーブル全体のスキャンを行う際、読み取り待機中のデータを事前にローカルにキャッシュします。
プリウォーム。コンパクションバージョンの結合前に、ホットデータをローカルキャッシュにロードします。短時間でのダウンタイム後に再起動すると、永続キャッシュは依然として有効であり、ディザスタリカバリシナリオにおけるパフォーマンスの変動を軽減します。
さらに、RTO時間を確保するため、ローカル永続キャッシュへのアクセスシーケンスはリアルタイムでFollowerレプリカに同期され、LeaderレプリカとFollowerレプリカのキャッシュデータはほぼ同等です。レプリケーション移行時には、ローカルキャッシュデータがターゲット側にも転送され、移行後のパフォーマンスを保証します。
書き込みキャッシュ。ローカルディスクの低遅延を利用して書き込みキャッシュとして機能し、Metaファイル、最新のclog、ミニダンプなどの重要なローカル状態を記録します。
オブジェクトストレージ:システム内のすべてのデータを格納し、クラスタ共用のclogやすべてのベースラインデータ、ローカル物理ディスクまたはクラウドディスクの容量が不足した場合に書き込まれるノード固有のデータ(増分データ、一時ファイルなど)も含まれます。オブジェクトストレージの容量はほぼ無限ですが、アクセス遅延は大きいです。
上記のマルチレベルキャッシュにより、ホットデータのアクセスパフォーマンスが保証され、オブジェクトストレージを基盤としてTPおよびAP業務を同時に満たす製品アーキテクチャを提供できます。