📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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>' ] ... );

パラメータ

パラメータ必須説明
<catalog_name>はいTiDB Cloud Lake 内のカタログ名。
TYPEはいカタログエンジン。この値を ICEBERG に設定します。
CONNECTIONはいIceberg カタログおよびそのストレージの接続プロパティ。
CONNECTION 内の TYPEはいIceberg カタログタイプ: rest、glue、storage、または hive。
ADDRESSカタログタイプによるカタログサービスのエンドポイント、または Hive Metastore のアドレス。
WAREHOUSEカタログタイプによるカタログで使用される warehouse の場所。
<connection_parameter>カタログタイプによるカタログ、認証、およびオブジェクトストレージのプロパティ。

以下の接続パラメータは、S3 互換ストレージで使用できます。

接続パラメータ説明
s3.endpointS3 互換サービスのエンドポイント。
s3.access-key-idS3 access key ID。
s3.secret-access-keyS3 secret access key。
s3.session-token一時クレデンシャルとともに使用するセッショントークン。
s3.regionS3 リージョン。
client.regionクライアントで使用されるリージョン。この値は s3.region より優先されます。
s3.path-style-accesspath-style の S3 アクセスを使用するかどうか。
s3.sse.typeサーバー側暗号化のタイプ。
s3.sse.keyKMS key ID、または顧客提供の暗号化キー。
s3.sse.md5顧客提供の暗号化キーに対する MD5 チェックサム。
client.assume-role.arn引き受ける IAM ロールの ARN。
client.assume-role.external-idIAM ロールを引き受ける際に使用する外部 ID。
client.assume-role.session-nameIAM ロールを引き受ける際に使用するセッション名。
s3.allow-anonymousパブリックストレージへの匿名アクセスを許可するかどうか。
s3.disable-ec2-metadataEC2 インスタンスメタデータからのクレデンシャルを無効にするかどうか。
s3.disable-config-loadローカル設定ソースからのクレデンシャルおよび設定の読み込みを無効にするかどうか。

サポートされるカタログタイプ

TiDB Cloud Lake は、以下の Iceberg カタログタイプをサポートしています。

カタログタイプTYPE 値接続要件
RESTrestREST カタログアドレス、warehouse の場所、およびストレージプロパティ。
AWS GlueglueGlue リージョンと認証プロパティに加え、S3 ストレージプロパティ。
Storage (Amazon S3 Tables)storageテーブルバケット ARN と AWS クライアント認証プロパティ。
Hive MetastorehiveHive Metastore アドレス、warehouse の場所、およびストレージプロパティ。

Storage カタログは、以下の AWS クライアントプロパティをサポートします。

接続パラメータ説明
table_bucket_arnAmazon S3 Tables のテーブルバケットの ARN。
profile_nameAWS プロファイル名。
region_nameAWS リージョン。
aws_access_key_idAWS access key ID。
aws_secret_access_keyAWS secret access key。
aws_session_token一時クレデンシャルとともに使用する 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 型はサポートされません。

Apache Iceberg™TiDB Cloud Lake
BOOLEANBOOLEAN
INTINT32
LONGINT64
DATEDATE
TIMESTAMP / TIMESTAMPZTIMESTAMP
FLOATFLOAT
DOUBLEDOUBLE
STRING / BINARYSTRING
DECIMALDECIMAL
LISTARRAY
MAPMAP
STRUCTTUPLE

キャッシュされたメタデータを更新する

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> [ , ... ] ) ];
パラメータ説明
ENGINE = ICEBERGテーブルを Iceberg 形式で保存します。
PARTITION BY1 つ以上のパーティションカラムを定義します。

Iceberg テーブルへの書き込み時には、以下の TiDB Cloud Lake データ型がサポートされます。

TiDB Cloud Lake 型Apache Iceberg™ 型
BOOLEANBoolean
INTInt
BIGINTLong
FLOATFloat
DOUBLEDouble
STRINGString
DATEDate
TIMESTAMPTimestamp

データを挿入する

INSERT INTO を使用して Iceberg テーブルに行を書き込みます。

INSERT INTO [ <database_name>. ]<table_name> [ ( <column_name> [ , ... ] ) ] VALUES ( <value> [ , ... ] ) [ , ... ];

パーティションテーブルと非パーティションテーブルの両方で、単一行および複数行の挿入をサポートしています。パーティションテーブルの場合、TiDB Cloud Lake は行を対応するパーティションにルーティングします。

Iceberg テーブル関数

Iceberg メタデータを調査するには、次のテーブル関数を使用します。

このページは役に立ちましたか?