通常、データベース内のテーブルデータはデータベースのストレージ領域に格納されますが、外部テーブルのデータは外部ストレージサービスに格納されます。外部テーブルを作成する際には、データファイルのパスとデータファイルの形式を定義する必要があります。作成が完了すると、ユーザーは外部テーブルを通じて外部ストレージサービスからファイル内のデータを読み取ることができます。
外部テーブルは通常のテーブルと同様に、他のテーブルと結合したり、集計やソートなどを行うことができます。ただし、外部テーブルと通常のテーブルとの違いは以下の通りです:
外部テーブルのデータは外部ファイルに格納され、通常のテーブルのデータはデータベースに格納されます。
外部テーブルは読み取り専用であり、クエリ文で使用することはできますが、DML操作を実行することはできません。
外部テーブルでは制約の追加やインデックスの作成はサポートされていません。
一般的に、外部テーブルへのアクセス速度は通常のテーブルよりも遅くなります。
HDFS外部テーブル
HDFS外部テーブルの読み取り
Hadoop分散ファイルシステム(HDFS)は、Hadoopエコシステムにおける中核的なコンポーネントであり、大規模データセットの保存と処理を担っています。そのため、OceanBaseデータベースではV4.3.5 BP1バージョンからHDFS外部テーブルの読み取り機能が新たに追加され、HDFS上に保存されたデータへの直接アクセスが可能になりました。
HDFS外部テーブル(ファイルはHDFS上に存在)の作成方法の詳細については、CREATE EXTERNAL TABLEを参照してください。
HDFSのSDKはJavaで開発されているのに対し、OceanBaseはC++で開発されているため、JNI(Java Native Interface)フレームワークを介してブリッジングする必要があります。同様に、ODPSのJava SDKもJava環境で動作します。HDFS外部テーブル機能を利用するには、Java環境を構築し、特定の構成パラメータを設定することで、HDFSファイルにアクセスできるテーブルを作成する必要があります。関連する構成パラメータは以下の通りです:
- ob_enable_java_env
- ob_java_home
- ob_java_connector_path
- [ob_java_opts](../../../../800.configuration-items-and-system-variables/100.system-configuration-items/300.cluster-level-configuration-items/16650.ob_java_opts.md
Java環境の構成方法の詳細については、OceanBaseデータベースJAVA SDK環境のデプロイを参照してください。
ODPS外部テーブル
MaxCompute(ODPS)は、ストレージAPI(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の選択については、以下の表を参照してください。
説明
OceanBaseデータベースV4.3.5では、V4.3.5 BP3バージョンからODPS Storage APIに適応します。
| 次元 | Storage API | Tunnel API | 適用シナリオ |
|---|---|---|---|
| 特徴 | 細かい粒度でのデータアクセスをサポートします(例えば、パーティションフィルタリング、述語プッシュダウンなど)。 | フルテーブルデータの効率的なインポート/エクスポートに特化し、無条件フィルタリング機能を備えています。 | HTAPハイブリッドワークロード、パーティションテーブルの条件付きクエリ、およびSparkやODPSといった計算エンジンとの深い統合をサポートしています。 |
| シャーディング戦略 | 自動シャーディング:バイトまたは行数に基づいてタスクを動的に分割し、並列処理効率を向上させます。 | 手動シャーディング:開発者がパーティションサイズまたは行数を自ら計算し、設定が複雑です。Storage APIに比べてパフォーマンスは低く、ODPSのリソース構成に特別な要件はなく、すべてのODPS構成仕様と互換性があります。 |
|
| パフォーマンス最適化 | 低リソース消費:述語プッシュダウンにより転送データ量を削減し、計算をデータベース側にプッシュダウンします。クエリ速度が速い。 | 高リソース消費:フル転送では大量の帯域幅とストレージ容量を占有する可能性があります。 | 転送データ量を削減し、HTAPの効率を向上させる必要がある場合はStorage APIを選択します。簡単なETLやフルバックアップにはTunnel APIを選択します。 |
| 環境要件 | OceanBaseデータベースV4.3.5 BP3バージョン。 | 特別な制限はありません。 | VPS環境をサポートする場合はStorage APIを優先します。旧バージョンやシンプルなシナリオではTunnel APIを選択します。 |
| データフィルタリング機能 | サポート:SQL条件(例えばWHERE)によりデータをフィルタリングし、必要な部分のみを転送します。 |
サポートなし:フル転送後にローカルでフィルタリングする必要があります。 | 条件に基づいてデータをフィルタリングする必要がある場合(特定ユーザーの行動分析など)、Storage APIを選択します。 |