Apache Iceberg™ Tables
TiDB Cloud Lake は Apache Iceberg™ カタログに接続できるため、Fuse テーブルにデータをロードせずに Iceberg テーブルをクエリできます。接続先のカタログが書き込み操作をサポートしている場合は、Iceberg テーブルを作成して書き込むこともできます。
Iceberg を使用する場合
次のような場合は Iceberg を使用します。
- データがすでに Iceberg カタログで管理されている。
- 複数のクエリエンジンで同じテーブルメタデータとオブジェクトストレージを共有する必要がある。
- schema evolution やスナップショットなどの Iceberg の機能が必要である。
- TiDB Cloud Lake から Iceberg テーブルをクエリまたは書き込みたい。
Iceberg カタログを作成する
Iceberg データベースおよびテーブルにアクセスする前に、カタログを作成します。
構文
CREATE CATALOG <catalog_name>
TYPE = ICEBERG
CONNECTION = (
TYPE = '<catalog_type>'
[ ADDRESS = '<catalog_address>' ]
[ WAREHOUSE = '<warehouse_location>' ]
[ "<connection_parameter>" = '<connection_parameter_value>' ]
...
);
パラメータ
以下の接続パラメータは、S3 互換ストレージで使用できます。
サポートされるカタログタイプ
TiDB Cloud Lake は、以下の Iceberg カタログタイプをサポートしています。
Storage カタログは、以下の AWS クライアントプロパティをサポートします。
Iceberg カタログを管理およびクエリする
カタログを確認および選択するには、以下のステートメントを使用します。
SHOW CREATE CATALOG <catalog_name>;
SHOW CATALOGS [ LIKE '<pattern>' | WHERE <expression> ];
USE CATALOG <catalog_name>;
詳細は、SHOW CREATE CATALOG および SHOW CATALOGS を参照してください。
カタログを選択した後は、標準 SQL を使用してそのテーブルをクエリします。
SELECT <select_list>
FROM [ <catalog_name>. ]<database_name>.<table_name>
[ WHERE <condition> ];
データ型マッピング
以下の表は、Iceberg 型から TiDB Cloud Lake 型へのサポートされるマッピングを示しています。ここに記載されていない Iceberg 型はサポートされません。
キャッシュされたメタデータを更新する
TiDB Cloud Lake は、最初のクエリ後に Iceberg カタログのメタデータをキャッシュします。メタデータキャッシュの有効期間はデフォルトで 10 分で、非同期に更新されます。
キャッシュされたメタデータをすぐに更新する必要がある場合は、以下のステートメントを使用します。
USE CATALOG <catalog_name>;
ALTER DATABASE <database_name> REFRESH CACHE;
ALTER TABLE <database_name>.<table_name> REFRESH CACHE;
TiDB Cloud Lake は、Iceberg カタログから読み取ったテーブルデータのキャッシュもサポートしています。
Iceberg テーブルに書き込む
書き込み操作をサポートするカタログでは、Iceberg テーブルを作成して書き込むことができます。
テーブルを作成する
CREATE TABLE [ <database_name>. ]<table_name> (
<column_name> <data_type> [ , ... ]
)
ENGINE = ICEBERG
[ PARTITION BY ( <column_name> [ , ... ] ) ];
Iceberg テーブルへの書き込み時には、以下の TiDB Cloud Lake データ型がサポートされます。
データを挿入する
INSERT INTO を使用して Iceberg テーブルに行を書き込みます。
INSERT INTO [ <database_name>. ]<table_name>
[ ( <column_name> [ , ... ] ) ]
VALUES ( <value> [ , ... ] ) [ , ... ];
パーティションテーブルと非パーティションテーブルの両方で、単一行および複数行の挿入をサポートしています。パーティションテーブルの場合、TiDB Cloud Lake は行を対応するパーティションにルーティングします。
Iceberg テーブル関数
Iceberg メタデータを調査するには、次のテーブル関数を使用します。