OceanBaseは、**外部テーブル(External Table)と外部カタログ(External Catalog)**を通じて外部データにアクセスすることをサポートしており、ファイル形式のデータ(CSV / Parquet / ORC)、Hive / Icebergのレイクテーブル、およびMaxCompute(ODPS)などのデータソースを対象としています。
OceanBaseでは、オブジェクトストレージ、HDFS、またはMaxComputeなどの外部システムに保存されたデータをクエリ・分析し、内部テーブルと連携した連携分析を実行できます。
説明
データレイク関連機能は主にMySQLモードで利用できます。Catalog機能は現在MySQLモードでのみサポートされています。具体的な構文やバージョンの境界は、700.reference配下のSQLリファレンスドキュメントをご確認ください。接続手順の詳細については、このディレクトリ内の各サブドキュメントを参照してください。
OceanBaseが現在サポートしているデータレイク機能には、主に以下のものが含まれます:
- レイクテーブル形式へのアクセス(Hive、Iceberg、External Catalog経由)
- 外部ファイル形式へのアクセス(CSV、Parquet、ORC)
- 外部カタログへの接続(ODPS Catalog;HMS Catalog)
- 外部ストレージへのアクセス(ローカル、OSS、S3、HDFSなど)
- 外部データのクエリ、一部書き込み、およびエクスポート
- 外部テーブルと外部カタログの管理
データレイクアクセスモデル
OceanBaseが外部データにアクセスする際には、以下の階層が関わります:
- ストレージ層:データが実際に保存される場所。例:OSS、S3、HDFS、ローカルファイルシステム。
- ファイル形式層:データファイルのエンコーディング方式。例:Parquet、ORC、CSV。
- レイクテーブル形式層:テーブルの構成とメタデータの管理方式。例:Iceberg、Hive。
- カタログ層:外部メタデータサービス。例:HMS、REST、FILESYSTEM(Iceberg)、ODPS Catalog。
- アクセス層:外部テーブルまたはExternal Catalogを通じて、外部データをOceanBase SQLクエリシステムに取り込む。
MaxCompute(ODPS)は外部データウェアハウスサービスであり、ODPS CatalogまたはODPS外部テーブル(PROPERTIES (TYPE = 'ODPS' ...))を介してアクセスします。Iceberg/Hiveと同様のレイクテーブル形式には属しません。
対応データレイク形式
レイクテーブル形式(Lake Table Format)
形式 |
説明 |
アクセス方法 |
説明 |
|---|---|---|---|
| Apache Iceberg | オープンソーステーブル形式 | External Catalog(HMS / REST / FILESYSTEMなど) | 主に読み取り専用クエリ。書き込み機能はCatalogの種類とバージョンによって異なります。詳細はCatalogを使用したIcebergテーブルのロードを参照してください。 |
| Apache Hive | Hadoopエコシステムテーブル形式 | HMS Catalog(V4.4.1+) | 読み取り専用クエリ。詳細はCatalogを使用したHiveテーブルのロードを参照してください。 |
外部データソース
データソース |
説明 |
アクセス方法 |
|---|---|---|
| MaxCompute(ODPS) | アリババクラウドのビッグデータ計算サービス | ODPS Catalog(プロジェクトレベル、読み取り専用)またはODPS外部テーブル(単一テーブル、INSERTをサポート) |
データファイル形式(File Format)
形式 |
説明 |
典型的なシナリオ |
|---|---|---|
| Apache Parquet | 列指向ストレージ | ファイル外部テーブル、HMS/Hiveテーブル、Iceberg基盤ファイル、SELECT INTO OUTFILE |
| Apache ORC | 列指向ストレージ | ファイル外部テーブル、Hiveテーブル、SELECT INTO OUTFILE |
| CSV | テキスト形式 | ファイル外部テーブル、SELECT INTO OUTFILE、LOAD DATA、URL外部テーブル(FILES()) |
ファイル形式とレイクテーブル形式は異なる階層に属します。例えば、Icebergテーブルの基盤では通常Parquetがデータの保存に使用されます。
対応Catalogタイプ
注意
現在のCREATE EXTERNAL CATALOG SQLリファレンスドキュメントは主にTYPE = 'ODPS'の使い方について説明しています。ODPS Catalogの作成にはOceanBaseデータベースV4.3.5 BP2以降が必要です。HMS Catalogの作成にはV4.4.1以降が必要です。HMS Catalogの詳細については、Catalogを使用したHiveテーブルのロードを参照してください。
Catalogタイプ |
説明 |
用途 |
ドキュメント |
|---|---|---|---|
| ODPS | MaxComputeプロジェクトカタログ | MaxComputeプロジェクト内のテーブルのクエリ(読み取り専用、V4.3.5 BP2+) | ODPS Catalog |
| HMS | Hive Metastore | HMSが管理するHive / Icebergテーブルのクエリ(読み取り専用、V4.4.1+) | Catalogを使用したHiveテーブルのロード |
| REST | Iceberg REST Catalog | REST APIを介したIcebergテーブルへのアクセス(最小バージョンはCatalogを使用したIcebergテーブルのロードドキュメントを参照)。 | Catalogを使用したIcebergテーブルのロード |
サポートされているストレージタイプ
オブジェクトストレージと分散ストレージ
ストレージタイプ |
URIプレフィックス |
説明 |
|---|---|---|
| アリババOSS | oss:// |
ファイル外部テーブル、URL外部テーブル、SELECT INTO OUTFILEなど |
| AWS S3 | s3:// |
同上 |
| HDFS | hdfs:// |
V4.3.5 BP1以降。Java SDK環境の構築が必要です |
| ローカルファイルシステム | file://またはパス |
secure_file_privによって制限されます |
説明
Azure Blob(azblob://)は現在、バックアップ/アーカイブなどのシナリオでのみ使用されています。外部テーブルのLOCATIONがサポートされているかどうかは、CREATE EXTERNAL TABLEを参照してください。
Locationとアクセス資格情報
外部テーブルまたはLocationを作成する際には、アクセス資格情報(access_id、access_keyなど)を設定する必要があります。URLパラメータまたはCREATE LOCATIONを通じて事前に設定できます(Locationの構文についてはCREATE LOCATIONを参照してください)。
サポートされているデータ操作
読み取り操作(SELECT)
操作 |
適用対象 |
説明 |
|---|---|---|
SELECTクエリ |
ファイル外部テーブル、URL外部テーブル、External Catalogテーブル | 各タイプのサポート範囲は、対応するサブドキュメントを参照してください |
| パーティションプルーニング | Hive / Iceberg(Catalog経由) | WHERE句でパーティション列を指定することで、スキャン範囲を縮小できます |
| タイムトラベル | Iceberg | 特定のシナリオでサポートされます |
JOIN |
上記の外部オブジェクトと内部テーブル | フェデレーションクエリをサポートします |
書き込み操作とエクスポート
操作 |
適用対象 |
説明 |
|---|---|---|
INSERT INTO |
ODPS外部テーブル | MaxCompute APIを介してリモートテーブルに書き込みます。ファイル型外部テーブルは読み取り専用です |
INSERT INTO |
Icebergテーブル | Catalogのタイプとバージョンによってはサポートされる場合があります。HMS Catalog下では通常読み取り専用です。詳細については、Catalogを介したIcebergテーブルのロードを参照してください |
SELECT INTO OUTFILE |
CSV、Parquet、ORC | オブジェクトストレージまたはローカルファイルへのエクスポート |
CREATE TABLE AS SELECT |
— | 外部データから内部テーブルを作成できます |
外部テーブルとカタログ管理
操作 |
説明 |
|---|---|
CREATE EXTERNAL TABLE |
ファイル外部テーブルまたはODPS外部テーブルの作成 |
CREATE EXTERNAL CATALOG |
外部カタログの作成 |
ALTER EXTERNAL TABLE |
ファイルリストの更新、パーティションの管理など |
DROP TABLE / DROP CATALOG |
外部テーブルまたはカタログの削除 |
AUTO_REFRESH |
OFF、IMMEDIATE、INTERVALをサポートします |
Icebergの機能サポート
以下の機能は、External Catalogを介してアクセスするIcebergテーブルに適用されます。具体的なサポート範囲は、Catalogのタイプとバージョンによって異なります。
機能 |
サポート状況 |
|---|---|
| パーティションとPartition Transform | year()、bucket()、truncate() などの変換を含むパーティションの読み取りをサポートします |
| ファイルの削除 | Position Delete、Equality Delete などの機能は、現在のバージョンに準じます |
| データファイル形式 | 主にParquetをサポートします |
| メタデータ | metadata.json、manifest、manifest-list の解析など |
機能の制限
既知の制限事項
制限事項 |
説明 |
|---|---|
| ファイル型外部テーブル | 読み取り専用であり、DML、制約、インデックスはサポートされません |
| External Catalog | Catalog下のオブジェクトは読み取り専用であり、INSERT、DROP TABLE などはサポートされません (ODPSへの書き込みは、ODPS外部テーブルを使用してください) |
INSERT OVERWRITE |
Icebergテーブルはサポートしません |
| Icebergパーティションへの書き込み | INSERT INTO Icebergテーブル時のパーティションへの書き込みには制限があります |
| COS外部テーブル | 新規作成は現在サポートされていません |
| Catalogモード | 現在はMySQLモードのみ |