すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:システムテーブル

最終更新日:Jan 07, 2025

Apache Paimon(Paimon)は、システムテーブルを使用して、各Paimonテーブルのメタデータとデータ消費情報を格納します。このトピックでは、さまざまなシステムテーブルの列について説明します。

テーブルメタデータに関連するシステムテーブル

スナップショットテーブル

スナップショットテーブルを使用すると、スナップショットファイルのIDや作成時刻など、Paimonテーブルの各スナップショットファイルに関する情報をクエリできます。

たとえば、次のSQLステートメントを使用して、mycatalog.mydb.mytbl Paimonテーブルのスナップショットテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$snapshots`; // mycatalog.mydb.mytblテーブルのスナップショットテーブルをクエリします。

次の表に、スナップショットテーブルの列を示します。

データ型

説明

snapshot_id

Long

スナップショットファイルのID。

schema_id

Long

スナップショットファイルで使用されるスキーマファイルのID。スキーマテーブルからスキーマ情報を取得できます。

commit_time

Timestamp

スナップショットファイルが作成された時刻。

total_record_count

Long

スナップショットファイルが指すデータファイル内のレコードの総数。

説明

この列の値は、Paimonテーブルに論理的に格納されているデータレコードの数を示すものではありません。これは、データファイルがスナップショットファイルに取り込まれる前にメモリ内で圧縮されるためです。

delta_record_count

Long

前のスナップショットファイルと比較して追加されたデータレコードの数。

changelog_record_count

Long

前のスナップショットファイルと比較して生成された変更ログレコードの数。

スキーマテーブル

ALTER TABLECREATE TABLE AS、または CREATE DATABASE AS ステートメントを使用してPaimonテーブルのスキーマを変更すると、変更ごとにスキーマテーブルにレコードが生成されます。スキーマテーブルを使用すると、Paimonテーブルの現在および過去のスキーマ情報をクエリできます。たとえば、次の SQL ステートメントを使用して、mycatalog.mydb.mytbl Paimon テーブルのスキーマテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$schemas`; // mycatalog.mydb.mytblテーブルのスキーマテーブルをクエリします。

次の表に、スキーマテーブルの列を示します。

データ型

説明

schema_id

Long

スキーマのID。

fields

String

各列の名前とデータ型。

partition_keys

String

パーティションキーの名前。

primary_keys

String

プライマリキーの名前。

options

String

テーブルオプションの値。

comment

String

追加情報を提供するためにテーブルに追加されたコメント。

update_time

Timestamp

スキーマが最後に変更された時刻。

オプションテーブル

オプションテーブルを使用すると、テーブルオプションの現在の構成をクエリできます。

たとえば、次のSQLステートメントを使用して、mycatalog.mydb.mytbl Paimonテーブルのオプションテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$options`; // mycatalog.mydb.mytblテーブルのオプションテーブルをクエリします。

次の表に、オプションテーブルの列を示します。

データ型

説明

key

String

テーブルオプションの名前。

value

String

テーブルオプションの値。

説明

テーブルオプションがテーブルに含まれていない場合、オプションはデフォルト値に設定されます。

パーティションテーブル

パーティションテーブルを使用すると、Paimonテーブルのパーティション、各パーティションのデータレコードの総数、および各パーティションのファイルの合計サイズをクエリできます。

たとえば、次のSQLステートメントを使用して、mycatalog.mydb.mytbl Paimonテーブルのパーティションテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$partitions`; // mycatalog.mydb.mytblテーブルのパーティションテーブルをクエリします。

次の表に、パーティションテーブルの列を示します。

データ型

説明

partition

String

[パーティション値 1, パーティション値 2, ...] 形式のパーティション。

record_count

Long

パーティション内のデータレコードの総数。

説明

この列の値は、パーティションに論理的に格納されているデータレコードの数を示すものではありません。これは、データファイルがスナップショットファイルに取り込まれる前にメモリ内で圧縮されるためです。

file_size_in_bytes

Long

パーティション内のファイルの合計サイズ。単位:バイト。

現在のスナップショットファイルが指すデータファイルのみがカウントされます。

ファイルテーブル

ファイルテーブルを使用すると、スナップショットファイルが指すすべてのデータファイル(ファイル形式、ファイル内のレコード数、ファイルサイズなど)をクエリできます。

たとえば、次の SQL ステートメントを使用して、mycatalog.mydb.mytbl Paimon テーブルの最新のスナップショット用に作成されたファイルテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$files`; // mycatalog.mydb.mytblテーブルの最新のスナップショットのファイルテーブルをクエリします。

mycatalog.mydb.mytbl Paimon テーブルの特定のスナップショット用に作成されたファイルテーブルをクエリすることもできます。次の SQL ステートメントを使用して、ID が 5 のスナップショット用に作成されたファイルテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$files` /*+ OPTIONS('scan.snapshot-id'='5') */; // ID が 5 のスナップショットのファイルテーブルをクエリします。

次の表に、ファイルテーブルの列を示します。

データ型

説明

partition

String

ファイルを含むパーティション。形式:[パーティション値 1, パーティション値 2, ...]

bucket

Integer

ファイルを含むバケット。この列は、固定バケットモードを使用するプライマリキテーブルにのみ適用されます。

file_path

String

ファイルのパス。

file_format

String

ファイルの形式。

schema_id

Long

スナップショットファイルが使用するスキーマファイルの ID。スキーマテーブルからスキーマ情報を取得できます。

level

Integer

ファイルのログ構造マージツリー(LSM)レベル。この列は、プライマリキーテーブルにのみ適用されます。

値 0 は小さなファイルを意味します。バケット内の小さなファイルの数をクエリして、バケット内の圧縮の進行状況を監視できます。

record_count

Long

ファイル内のレコード数。

file_size_in_bytes

Long

ファイルのサイズ。単位:バイト。

説明

ファイルテーブルには、クエリ対象のスナップショットファイルが指していない履歴データファイルに関する情報は含まれていません。

タグテーブル

タグテーブルを使用すると、タグの名前やタグに関連付けられたスナップショットなど、Paimonテーブルのタグに関する情報をクエリできます。

たとえば、次のSQLステートメントを使用して、mycatalog.mydb.mytbl Paimonテーブルのタグテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$tags`; // mycatalog.mydb.mytblテーブルのタグテーブルをクエリします。

次の表に、タグテーブルの列を示します。

データ型

説明

tag_name

String

タグの名前。

snapshot_id

Long

タグに関連付けられたスナップショットのID。

schema_id

Long

タグが使用するスキーマの ID。スキーマテーブルからスキーマ情報を取得できます。

commit_time

Timestamp

タグに関連付けられたスナップショットが作成された時刻。

record_count

Long

データファイル内のレコード数。

データ消費に関連するシステムテーブル

読み取り最適化テーブル

Paimon テーブルのデータファイルは、消費できるようになる前にメモリ内で圧縮する必要があり、これが読み取り効率に影響します。プライマリキーテーブルを使用していて、バッチ読み取りまたはアドホック OLAP クエリの効率を向上させたい場合は、対応する読み取り最適化テーブルからデータを消費できます。これにより、圧縮を必要としないファイルのみが読み取られるため、圧縮プロセスが不要になり、クエリ効率が向上します。小さなファイルは圧縮頻度が低いため、読み取り最適化テーブルではデータのレイテンシが増加することに注意してください。次のパラメーターを構成して、小さなファイルを定期的に圧縮し、書き込み効率、読み取り効率、およびデータレイテンシのバランスをとることができます。

パラメーター

説明

データ型

デフォルト値

備考

compaction.optimization-interval

小さなファイルが圧縮される間隔。

Duration

なし

小さなファイルを頻繁に圧縮すると、書き込み効率に影響する可能性があります。このパラメーターは 30 分 より大きい値に設定することをお勧めします。

たとえば、次の SQL ステートメントを使用して、mycatalog.mydb.mytbl Paimon テーブルの最新のスナップショット用に作成された読み取り最適化テーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$ro`; // mycatalog.mydb.mytblテーブルの最新のスナップショットの読み取り最適化テーブルをクエリします。

監査ログテーブル

Paimon テーブルの各レコードの具体的な操作を知る必要がある場合は、対応する監査ログテーブルからデータを消費できます。元の Paimon テーブルと比較して、監査ログテーブルは各レコードの先頭に rowkind という名前の列を挿入して操作タイプを格納します。 rowkind 列の有効な値は、+I(挿入)、-U(更新前)、+U(更新後)、および -D(削除)です。監査ログテーブルの各レコードの操作タイプは +I(挿入)です。

たとえば、次の SQL ステートメントを使用して、mycatalog.mydb.mytbl Paimon テーブルの最新のスナップショット用に作成された監査ログテーブルをクエリできます。

SELECT * FROM mycatalog.mydb.`mytbl$audit_log`; // mycatalog.mydb.mytblテーブルの最新のスナップショットの監査ログテーブルをクエリします。

参照

各システムテーブルの完全な構造については、Apache Paimon 公式ドキュメントをご参照ください。