外部テーブル(External Table)のデータは、OceanBaseクラスタ外部のストレージシステム(ローカルディレクトリ、オブジェクトストレージ、HDFS、MaxComputeなど)に保存され、データベース内にはメタデータとアクセスパスのみが保持されます。作成後は通常のテーブルと同様にSELECT、JOIN、集計などに使用できますが、読み取り専用であり、DML、制約、インデックスはサポートされません。
通常のテーブルとの違い:
比較項目 |
外部テーブル |
通常のテーブル |
|---|---|---|
| データの場所 | 外部ストレージ | OceanBase内部 |
| 読み書き | 外部テーブルは読み取り専用:SELECTは可能ですが、INSERT、UPDATE、DELETEなどのDMLは実行できません。 |
読み書き |
| 制約とインデックス | 主キー、一意性、外部キーなどの制約はサポートされていません、インデックスの作成もサポートされていません。 | サポート |
| 典型的なパフォーマンス | ネットワークと外部システムの影響を受ける | ローカルアクセスの方が高速 |
注意事項
- 外部テーブルを作成する際、システムは
LOCATIONとPATTERNに基づいて一致するファイルリストをシステムテーブルに書き込みます。スキャン時はこのリストに従って外部ファイルにアクセスします。 - 外部ディレクトリに新しいファイルが追加されても、自動的にリストには表示されません。外部テーブルのファイルリストを更新するを実行するか、外部ファイルの管理を参照してください。
- 外部ファイルが削除された場合、クエリは通常エラーを報告せず、対応するファイルに対して空結果が返されます。
- 外部ファイルが変更された場合、クエリは最新の内容を読み取ります。クエリと外部ファイルの同時並行的な変更は予期しない結果を引き起こす可能性があるため、クエリ実行中はファイルの変更を避けてください。
外部データへのアクセス方法
OceanBaseは、外部データへのアクセス方法を複数提供しています。まず、テーブルオブジェクトの永続化が必要かどうか、および同一ファイル群への頻繁な繰り返しクエリが必要かどうかに基づいて選択してください:
方法 |
テーブルオブジェクトの作成 |
典型的なシナリオ |
構文とドキュメントの入口 |
|---|---|---|---|
| 外部テーブル(CREATE EXTERNAL TABLE) | はい、メタデータは永続化されます | 繰り返しクエリが必要な場合、内部テーブルとJOINが必要な場合、ファイルリストとパーティションの管理が必要な場合 | CREATE EXTERNAL TABLE、外部テーブルの作成とクエリ |
| FILESテーブル関数 | いいえ、アドホッククエリ | 一時的な探索、一度の読み取り、LOAD DATAデータソース | FILESテーブル関数、URL外部テーブル(メタデータなし) |
| External Catalog | 外部カタログへの接続 | Hive / Iceberg / ODPSなどのレイクハウステーブルのクエリ、メタデータはCatalogから同期されます | CREATE EXTERNAL CATALOG構文、Catalogと外部テーブル |
説明
メタデータがないシナリオでは、FILES()以外に、SELECTのLocation URL形式を使用して直接ファイルを読むこともできます。詳細についてはURL外部テーブルを参照してください。FORMATの完全なパラメータ説明はCREATE EXTERNAL TABLEを参照してください。
HDFS外部テーブルとODPS外部テーブル
OceanBaseデータベースは、外部テーブルを通じて、外部ストレージシステムのファイルデータや外部データプラットフォームのテーブルデータなど、さまざまな種類の外部データソースにアクセスすることをサポートしています。その中で、HDFSは外部ストレージシステムに、ODPS(MaxCompute)は外部データプラットフォームに分類されます。
HDFS外部テーブル
Hadoop分散ファイルシステム(HDFS)は、Hadoopエコシステムにおける分散ストレージシステムです。OceanBaseデータベースは、バージョンV4.3.5 BP1から外部テーブルを通じてHDFS内のデータにアクセスできるようになりました。
HDFS外部テーブルを使用する前に、OceanBaseデータベースJAVA SDK環境の構築を行い、ob_enable_java_envなどの関連パラメータを設定する必要があります。構文の詳細については、CREATE EXTERNAL TABLEのLOCATIONおよびFORMATの項を参照してください。
ODPS(MaxCompute)外部テーブル
ODPS(MaxCompute)は、大規模データ処理向けのデータプラットフォームです。OceanBaseデータベースは、外部テーブルを通じてODPS内のデータにアクセスできるようになりました。
使用時には、外部テーブルのPROPERTIES (TYPE = 'ODPS' ...)で外部データソースを指定でき、API_MODEはstorage_apiまたはtunnel_apiをサポートします。構文の詳細については、CREATE EXTERNAL TABLEのproperties_type_optionsの項を参照してください。使用方法と例については、ODPS外部テーブルを参照してください。