OceanBaseデータベースはマルチテナントアーキテクチャです。V4.0.0バージョン以前では、システムテナントとユーザーテナントの2種類のテナントのみがサポートされていました。V4.0.0バージョン以降、Metaテナントの概念が導入されました。そのため、現在のバージョンではユーザーが確認できるテナントには、システムテナント、ユーザーテナント、およびMetaテナントの3種類があります。
システムテナント
システムテナントはクラスタがデフォルトで作成するテナントであり、クラスタのライフサイクルと一致します。クラスタおよびすべてのテナントのライフサイクル管理を担当します。システムテナントには1号ログストリームが1つしかなく、シングルポイント書き込みのみをサポートし、拡張性はありません。
システムテナントではユーザーテーブルを作成できますが、すべてのユーザーテーブルとシステムテーブルのデータは1号ログストリームによって提供されます。システムテナントのデータはクラスタ専用であり、プライマリ/スタンバイクラスタ間の物理同期や物理バックアップ・リカバリはサポートされません。
注意
システムテナントはクラスタ管理とテナント管理を目的としており、完全なデータベース機能は提供されません。本番環境や業務テストなどの用途には推奨されません。
ユーザーテナント
ユーザーテナントはユーザーが作成するテナントであり、完全なデータベース機能を外部に提供し、MySQLおよびOracleの2種類の互換モードをサポートしています。ユーザーテナントはサービス能力の水平スケーリングを複数のマシンに拡張可能で、動的なスケールアウトおよびスケールインをサポートします。内部ではユーザーの設定に基づいてログストリームが自動的に作成および削除されます。
ユーザーテナントのデータはより強力なデータ保護と可用性が求められ、クラスタ間の物理同期や物理バックアップ・リカバリをサポートしています。代表的なデータには、スキーマデータ、ユーザーテーブルデータ、トランザクションデータなどが含まれます。
機能適用性
OceanBaseデータベースCommunity EditionはMySQLモードのみを提供しています。
Metaテナント
MetaテナントはOceanBaseデータベース内部で自己管理されるテナントです。ユーザーテナントが作成されるたびに、システムは自動的に対応するMetaテナントを作成し、そのライフサイクルはユーザーテナントと一致します。
Metaテナントは、ユーザーテナントのクラスタ専用データの格納および管理に使用されます。このデータはクロスデータベースの物理同期や物理バックアップ・リカバリを必要としないもので、パラメータ、位置情報、レプリカ情報、ログストリームの状態、バックアップ・リカバリ関連情報、メジャーコンパクション情報などが含まれます。
テナントの比較
ユーザーの観点から見たシステムテナント、ユーザーテナント、Metaテナントの違いは以下の表のとおりです。
プロパティ |
システムテナント |
ユーザーテナント |
Metaテナント |
|---|---|---|---|
| テナントID | 1 |
|
|
| テナント名規則 | SYS | ユーザー定義。大文字・小文字の英字、数字、アンダースコアで構成する | META${user_tenant_id} 例:ユーザーテナントのテナントIDが 1002の場合、対応するMetaテナントのテナント名はMETA$1002となります |
| テナントタイプ | SYS | USER | META |
| データ属性 | クラスタ専有データ。クラスタ間の物理同期および物理バックアップ・リカバリをサポートしない | クラスタ非専有データ。クラスタ間の物理同期および物理バックアップ・リカバリをサポートする | クラスタ専有データ。クラスタ間の物理同期および物理バックアップ・リカバリをサポートしない |
| 拡張性 | データの水平スケーリングはできず、ログストリームは1つしかない | 水平スケーリングが可能で、動的な拡張と縮小をサポートする | データの水平スケーリングはできず、ログストリームは1つしかない |
| テナント運用 |
|
|
|
| データ外部アクセスインターフェース | システムテナントのビュー |
|
Metaテナントには直接ログインできません。その情報は、ユーザーテナントおよびシステムテナントからアクセスできます。
|
テナントアーキテクチャ
テナントアーキテクチャは以下の図に示されています。ユーザーテナントとMetaテナントは一対一で対応し、システムテナントとMetaテナントの間には1号ログストリームが必ず存在します。このログストリームはLogStream、略してLSと呼ばれます。ユーザーテナントではログストリームの動的な作成と削除をサポートしています。
