OceanBaseデータベースのストレージ観点から見ると、ストレージ構造の最上位はPartition Groupであり、一つのパーティショングループに対応します。多くの場合、PGと略称されます。PGは極限のパフォーマンスを得るために抽象化された概念です。ユーザーのトランザクションでは、多くの異なるテーブルを操作する可能性があることがわかっています。OceanBaseデータベースの分散アーキテクチャでは、これらの異なるテーブルが同一サーバー上にあることを保証するのは困難です。その結果、分散トランザクションが発生し、分散トランザクションは2フェーズコミットに依存するため、より大きなオーバヘッドが生じます。これらの異なるテーブルがすべて同一サーバー上にあれば、トランザクションを1フェーズで処理する最適化が可能となり、より良いパフォーマンスを得ることができます。しかし、ほとんどの場合、テーブルの配置を保証することはできません。インターネット上の多くのアプリケーションでは、業務に応じてユーザーIDに基づいてテーブルをパーティション化し、複数のテーブルで同じパーティションルールを適用していることがわかっています。これらのテーブルに対しては、構文を提供してTable Groupを構築できます。Table Group内の対応するパーティションをPartition Groupと呼び、OceanBaseデータベースは同一Partition Group内の複数のPartitionが常に結合されていることを保証します。このように、同一Partition Groupに対するトランザクション操作は単一マシントランザクションとして最適化され、より良いパフォーマンスが得られます。
一つのPartition Groupには複数のPartitionが含まれる場合がありますが、これらのPartitionのパーティションキーとパーティションルールは完全に同一である必要があります。Partition Groupは、OceanBaseデータベースにおけるリーダー選出と移行レプリケーションの最小単位です。Partitionとはテーブルのパーティションであり、Oracle/MySQLにおけるパーティションの定義と基本的に同じです。テーブルのパーティションルールには、Hashパーティション、Rangeパーティション、Listパーティション、さらにはサブパーティションなど、多様な種類があります。しかし、ストレージ層にとっては、上記のパーティションルールは関係なく、すべて一律にPartitionとして扱われます。
OceanBaseデータベースでは、ユーザーテーブルに対してローカルインデックスの作成をサポートしています。ローカルインデックスの特徴は、ストレージ上で主テーブルと結合され、同一のパーティション内に格納されることです。主テーブルと各インデックスは内部ではそれぞれ独立したTable Storeに格納され、各Table Storeには複数のSSTableとMemTableが含まれます。MemTableはメモリに格納され、動的データを保存し、読み書き操作を提供します。SSTableはディスクに格納され、静的データを保存し、読み取り専用です。