外部テーブル(External Table)のデータは、OceanBaseクラスタ外部のストレージシステム(ローカルディレクトリ、オブジェクトストレージ、HDFSなど)に格納され、データベース内にはメタデータとアクセスパスのみが保存されます。作成後は通常のテーブルと同様にSELECT、JOIN、集計などに使用できますが、読み取り専用であり、DML、制約、インデックスはサポートされません。
通常のテーブルとの違い:
比較項目 |
外部テーブル |
通常のテーブル |
|---|---|---|
| データの場所 | 外部ストレージ | OceanBase内部 |
| 読み書き | 外部テーブルは読み取り専用:SELECTは可能ですが、INSERT、UPDATE、DELETE などのDMLは実行できません。 |
読み書き |
| 制約とインデックス | サポートされていません | サポートされています |
| 典型的なパフォーマンス | ネットワークと外部システムの影響を受ける | ローカルアクセスの方が高速 |
注意点
- 作成時には
LOCATION、PATTERNに基づいてファイルリストを収集します。新しいファイルを追加するには、リフレッシュが必要です。詳細については、外部ファイルの管理およびALTER EXTERNAL TABLEを参照してください。 - 外部テーブルのパーティションで
PARTITION_TYPE = USER_SPECIFIEDの場合、ALTER EXTERNAL TABLE を使用してパーティションのLOCATIONを追加または削除できます(MySQLモードのALTER機能については、対応するドキュメントをご確認ください)。 - 削除された外部ファイルはクエリ時にエラーが報告されません。外部ファイルを同時に変更すると予期しない結果が発生する可能性があります。
外部データへのアクセス方法
方法 |
テーブルオブジェクトの作成 |
典型的なシナリオ |
構文とドキュメントの入口 |
|---|---|---|---|
| 外部テーブル(CREATE EXTERNAL TABLE) | はい | 繰り返しクエリが必要な場合、内部テーブルとJOINする必要がある場合、ファイルリストとパーティションを管理する必要がある場合 | CREATE EXTERNAL TABLE、外部テーブルの作成とクエリ |
| FILESテーブル関数 | いいえ | 一時的な探索、一度の読み取り | FILESテーブル関数、URL外部テーブル(メタデータなし) |
説明
ファイル形式(FORMAT)の完全なパラメータは、CREATE EXTERNAL TABLE を参照してください。External Catalogなどの機能は、MySQLモードのドキュメントを主とします。Oracleモードでは、実際にサポートされている機能をご確認ください。
HDFS外部テーブル
HDFSにアクセスするには、OceanBaseデータベースJAVA SDK環境のデプロイが必要であり、ob_enable_java_envなどの設定も必要です。詳細については、CREATE EXTERNAL TABLEを参照してください。障害のトラブルシューティングについては、外部テーブルのよくある質問とトラブルシューティングガイドを参照してください。