通常、テーブルデータはデータベース自身のストレージ領域に格納されます。一方、外部テーブル(External Table)とは、そのデータが実際にはデータベース外部のストレージシステム(オブジェクトストレージ、HDFS、ODPSなど)に保存されている特殊なテーブルタイプであり、データベースはメタデータとアクセスパスのみを保持します。ユーザーは標準SQLを使用して外部テーブルに対するクエリを実行し、異種データソースへの統一的なアクセスを実現できます。
外部テーブルを作成する際には、以下の項目を指定する必要があります:
- データの場所(例:OSSパス、HDFS、ODPSなど)
- データ形式(例:CSV、Parquet、ORCなど)
作成に成功すると、外部テーブルは通常のテーブルと同様にJOIN、集計、ソートなどの操作に参加できますが、以下の重要な違いがあります:
| 特性 | 外部テーブル | 通常のテーブル |
|---|---|---|
| データストレージ場所 | 外部ストレージシステム(OSS/HDFS/ODPSなど) | OceanBase分散ストレージ |
| 読み書き機能 | 読み取り専用 | 読み書きの完全サポート |
| 制約とインデックス | 制約の追加やインデックスの作成はサポートされていない | 全面サポート |
| クエリパフォーマンス | ネットワークや外部システムの影響を受けるため、通常は遅い | 高パフォーマンスなローカルアクセス |
外部テーブルの種類の詳細
OceanBaseは複数の外部テーブルタイプをサポートしています。
ファイル外部テーブル
オブジェクトストレージ(OSS、S3互換のオブジェクトストレージなど)、分散ファイルシステム(HDFSなど)、またはローカルファイルシステムに保存されている構造化/半構造化ファイルに適しています。
外部テーブルを使用して外部ファイルを直接読み取ることができ、select into outfile を使用してデータを外部ファイルにエクスポートしたり、insert into ... from files() を使用して外部テーブルのデータをOceanBaseにインポートしたりすることもできます。
サポートされる形式:
- カラムストア:Parquet(推奨)、ORC(高圧縮率、高性能)(V4.3.5以降のバージョンでサポート)
- 行ストア:CSV
ODPS外部テーブル
OceanBaseはV4.3.5から、外部テーブルを介してMaxComputeのデータを読み取りおよびインポートする機能をサポートしています。ODPS APIに適応することで、外部テーブルを使用してMaxComputeのテーブルにアクセスできるようになりました。ODPS外部テーブルを作成することで、Alibaba Cloud MaxCompute(旧ODPS)のテーブルへの透過的な読み書きが可能になり、データ移行なしでシステム間の統合分析、リアルタイムレポート、およびデータフィードバックを実現できます。
詳細については、ODPS外部テーブルを参照してください。
JDBCプラグイン外部テーブル
OceanBase JDBC外部テーブルプラグインはJavaに基づいており、リモートのMySQLテーブルをローカルの外部テーブルに透過的にマッピングでき、効率的なクエリとソース間連邦分析をサポートします。
- 適用バージョン:OceanBase V4.4.1以降(MySQLモードのみ)
- コアバリュー:データ移行不要で、標準SQLを使用してリモートのMySQLデータベースに直接クエリを実行できます。
MySQL外部テーブルプラグインを使用するには、以下の設定を完了する必要があります:
- OceanBaseクラスタがデプロイ済みで、MySQLモードのユーザーテナントが作成されていること。
- すべてのOBServerノードにJDK 11以降のバージョンがインストールされており、
JAVA_HOMEが正しく設定されていること。 - MySQL外部テーブルプラグインのJARパッケージがダウンロードおよびデプロイ済みで、そのパスが設定されていること。
詳細なインストールおよび設定手順については、ドキュメントMySQL外部テーブルプラグインを参照してください。
Catalog外部テーブルと通常の外部テーブルの違い
OceanBaseは、2種類の外部データアクセスモードを提供します:
| モード | 適用シナリオ | メタデータ管理 | 使用例 |
|---|---|---|---|
| Catalogモード (ODPS Catalog、HMS Catalog) |
既存のデータソース(ODPS/HMS) | 自動同期 | SET CATALOG my_hms;、SELECT * FROM db1.sales; |
| ファイル/ODPS/JDBC外部テーブル | 一時ファイルまたはカスタムデータソース | 手動でテーブルを作成 | CREATE EXTERNAL TABLE ... LOCATION ...; |