通常、データベース内のテーブルデータはデータベースのストレージ領域に格納されますが、外部テーブルのデータは外部ストレージサービスに格納されます。外部テーブルを作成する際には、データファイルのパスと形式を定義する必要があります。作成後は、外部テーブルを通じて外部ストレージサービスからファイル内のデータを読み取ることができます。
外部テーブルは通常のテーブルと同様に、他のテーブルとの結合、集計、ソートなどを行うことができます。外部テーブルと通常のテーブルの主な違いは以下のとおりです:
外部テーブルのデータは外部ファイルに格納され、通常のテーブルのデータはデータベースに格納されます。
外部テーブルは読み取り専用であり、クエリ文で使用できますが、DML操作は実行できません。
外部テーブルでは制約の追加やインデックスの作成はサポートされません。
一般的に、外部テーブルへのアクセス速度は通常のテーブルよりも遅くなります。
HDFS外部テーブル
HDFS外部テーブルの読み取り
Hadoop分散ファイルシステム(HDFS)は、Hadoopエコシステムにおける中核的なコンポーネントであり、大規模データセットの格納と処理に利用されます。そのため、OceanBaseデータベースではHDFS外部テーブルの読み取り機能が新たに追加され、HDFS上に保存されたデータへの直接アクセスをサポートしています。
HDFS外部テーブル(ファイルはHDFS上にある)の作成方法の詳細については、CREATE EXTERNAL TABLEを参照してください。
HDFSのSDKはJavaで開発されており、OceanBaseはC++で開発されているため、JNI(Java Native Interface)フレームワークを介して橋渡しを行う必要があります。同様に、ODPSのJava SDKもJava環境が必要です。HDFS外部テーブル機能を使用するには、Java環境を構成し、特定のパラメータを設定することで、HDFSファイルにアクセス可能なテーブルを作成できます。関連するパラメータは以下の通りです:
Java環境の構成方法の詳細については、OceanBaseデータベースJAVA SDK環境のデプロイを参照してください。
HDFS外部テーブルの書き込み
OceanBaseデータベースはV4.4.0バージョンからHDFS外部テーブルドライバーの書き込み機能をサポートしています。HDFS外部テーブルドライバーの書き込みに関する詳細は、SELECT INTOを参照してください。
ODPS外部テーブル
MaxCompute(ODPS)は、オープンストレージ(Storage API)とTunnel APIを提供しています:
- Storage API:データサービスインターフェースで、効率的で低遅延、安全なデータ読み取り方式を提供します。
- Tunnel API:データのアップロード/ダウンロードインターフェースで、主にテーブルデータのバッチ操作(例:テーブル全体のデータインポート・エクスポート)に使用されます。
OceanBaseデータベースは、ODPS APIに対応することで、外部テーブルからODPSテーブルにアクセスする機能を備えています。ODPS外部テーブルを作成する際、OceanBaseデータベースはStorage APIとTunnel APIのパラメータ設定オプションを提供します。パラメータの使用方法の詳細については、CREATE EXTERNAL TABLEを参照してください。Storage APIとTunnel APIの選択については、次の表を参照してください。
比較項目 |
Storage API |
Tunnel API |
適用シナリオ |
|---|---|---|---|
| 特徴 | 厳密なデータアクセスをサポートします(パーティションフィルタリング、述語プッシュダウンなど)。 | 全テーブルデータの効率的なインポート/エクスポートに特化し、無条件フィルタリングが可能です。 | HTAP混合ワークロード、パーティションテーブルの条件検索、計算エンジン(Sparkなど)とODPSとの深い統合に対応しています。 |
| シャーディング戦略 | 自動シャーディング:バイト単位または行数に基づいてタスクを動的に分割し、並列処理の効率を向上させます。 | 手動シャーディング:開発者がパーティションサイズや行数を計算し、設定が複雑です。Storage APIに比べてパフォーマンスは低く、ODPSのリソース構成に特別な要件はなく、すべてのODPS構成仕様と互換性があります。 |
|
| パフォーマンス最適化 | 低リソース消費:述語プッシュダウンにより転送データ量が削減され、計算がデータベース側にプッシュダウンされます。クエリ速度が速くなります。 | 高リソース消費:全量転送は大量の帯域幅とストレージを消費する可能性があります。 | 転送データ量を削減し、HTAPの効率を向上させる必要がある場合はStorage APIを選択します。簡単なETLや全量バックアップにはTunnel APIを選択します。 |
| 環境要件 | OceanBaseデータベースV4.4.0バージョン。 | 特別な制限はありません。 | 環境がVPSをサポートする場合はStorage APIを優先します。旧バージョンやシンプルなシナリオではTunnel APIを選択します。 |
| データフィルタリング機能 | サポート:SQL条件(例えばWHERE)によってデータをフィルタリングし、必要な部分のみを転送します。 |
サポートなし:全量転送後にローカルでフィルタリングする必要があります。 | 条件に基づいてデータをフィルタリングする必要がある場合(特定ユーザーの行動分析など)、Storage APIを選択します。 |
Catalog外部テーブル
OceanBaseデータベースは、Catalog(データカタログ)機能により、外部データソースの統合管理と効率的なクエリを実現しています。この機能は、Catalog-Database-Tableという3層のデータ階層を新たに追加することで、ODPSやHMSなどの外部データソース内のテーブルデータに直接アクセスできるようにし、マッピングテーブルを手動で作成する必要がありません。Catalogの詳細については、Catalogの概要を参照してください。
OceanBaseデータベースのCatalogデータソースのサポート状況は以下のとおりです:
タイプ |
サポートバージョン |
データソースタイプ |
テーブル形式のサポート |
説明 |
|---|---|---|---|---|
| ODPS Catalog | OceanBaseデータベースV4.3.5 BP2以降のバージョン | ODPS | MaxComputeテーブル | Alibaba Cloud MaxComputeプラットフォームのデータクエリに適用されます。 |
| HMS Catalog | OceanBaseデータベースV4.4.1以降のバージョン | HMS | Hive、Icebergテーブル | Hive Metastoreを介してメタデータを管理し、オープンソースのデータレイクエコシステムをサポートします。 |