通常、テーブルデータはデータベース自身のストレージ領域に格納されます。外部テーブル(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パッケージをダウンロードし、デプロイしてそのパスを設定していること。
Catalog外部テーブルと外部テーブルの関係
OceanBaseは2種類の外部データアクセスモードを提供しています:
モード |
適用シナリオ |
メタデータ管理 |
典型的な使用方法 |
|---|---|---|---|
| Catalogモード (ODPS Catalog、HMS Catalog) |
事前定義されたデータソース(ODPS/HMS) | 自動同期 | SET CATALOG my_hms;、SELECT * FROM db1.sales; |
| ファイル/ODPS/JDBC外部テーブル | 一時ファイルまたはカスタムデータソース | 手動でのテーブル作成 | CREATE EXTERNAL TABLE ... LOCATION ...; |