OceanBaseデータベースのMySQLモードにはデータディクショナリがあり、データディクショナリテーブルは保護されています。ディクショナリビューはデータディクショナリテーブルへのアクセスに使用され、MySQLモードではINFORMATION_SCHEMAテーブルとSHOWステートメントを使用してデータディクショナリテーブルに格納されたデータにアクセスできます。
ディクショナリビューの構成
OceanBaseデータベースのMySQLモードにおけるディクショナリビューには、INFORMATION_SCHEMA.*関連ビュー、OCEANBASE.CDB/DBAプレフィックス付きビュー、およびMYSQL.*ビューが含まれます。
INFORMATION_SCHEMA.*プレフィックス付きビュー
INFORMATION_SCHEMAは、MySQLテナント内のデータベースメタデータ(データベースやテーブル名、列のデータ型、アクセス権限など)へのアクセスを提供します。これはデータディクショナリやシステムカタログとも呼ばれます。INFORMATION_SCHEMAは各MySQLテナント内のデータベース/スキーマであり、MySQLテナントが管理する他のすべてのデータベースに関する情報を格納するために使用されます。INFORMATION_SCHEMAデータベースにはいくつかの読み取り専用テーブルが含まれています。これらは実際にはビューであり、ベーステーブルではありません。
MYSQL.*プレフィックス付きビュー
MYSQL.*プレフィックスを持つビューはすべてシステムビューであり、OceanBaseデータベースのMySQLモードでサーバーが実行時に必要とする情報を格納するテーブルです。一般的に、mysqlプレフィックスを持つビューには、データベースオブジェクトのメタデータを格納するデータディクショナリテーブルや、その他の操作目的で使用されるシステムテーブルが含まれます。OceanBaseデータベースは一部のmysqlプレフィックス付きビューに互換性があります。例えば、help_*ビューにはサーバー側のヘルプ情報が含まれ、time_zone*にはタイムゾーン関連情報が記録され、USERビューとDBビューにはユーザー権限に関する情報が記録されています。
OCEANBASE.CDB/DBAプレフィックス付きビュー
OceanBaseデータベースでは、各DBA_*ビューを使用して、現在のテナントの一部のデータベースオブジェクトに関する情報を取得できます。システムテナントoceanbaseデータベースのCDBプレフィックス付きビューを使用すると、現在のクラスタ内のすべてのテナントの一部のデータベースオブジェクトに関する情報を取得できます。
ディクショナリビューの格納
テナント内の異なる種類のデータベースオブジェクトのメタ情報は、テナント内の対応するデータディクショナリテーブルに永続化されます。原則として、テナントはディクショナリビューを通じてのみ自身のデータディクショナリテーブルにアクセスできます。特に、システムテナントはディクショナリビューを通じてクラスタ内のすべてのテナントのデータディクショナリテーブルにアクセスできます。