2.2.4.7. データ型

上記のように、PostgreSQL コネクターは、行が存在するテーブルのように構造化されたイベントを含む行への変更を表します。イベントには各列値のフィールドが含まれ、その値がイベントでどのように表されるかは、列の PostgreSQL データ型によって異なります。本セクションでは、このマッピングを説明します。

以下の表は、各 PostgreSQL データ型をイベントのフィールド内の リテラル 型およびセマンティック型 にマッピングする方法を示しています。

ここで リテラル型 は、Kafka Connect スキーマタイプ( INT8INT16INT32 INT64FLOAT32FLOAT64BOOLEANSTRINGBYTESARRAYMAPSTRUCT )を使用して値をリテラルで表す方法を記述します。

セマンティック型 は、フィールドの Kafka Connect スキーマの名前を使用して Kafka Connect スキーマがフィールドの 意味 をキャプチャーする方法を記述します。

PostgreSQL データ型リテラル型 (スキーマ型)セマンティック型 (スキーマ名)注記

BOOLEAN

BOOLEAN

該当なし

 

BIT(1)

BOOLEAN

該当なし

 

ビット(> 1 )、ビットバージング[(M)]

BYTES

io.debezium.data.Bits

length スキーマパラメーターには、ビット数を表す整数が含まれます。生成される byte[] にはビットがリトルエンディアン形式で含まれ、指定数のビットが含まれるようにサイズが指定されます(例: numBytes = n/8 +(n%8== 0 ?)。0 : 1) ( n はビット数)

SMALLINT, SMALLSERIAL

INT16

該当なし

 

INTEGER, SERIAL

INT32

該当なし

 

BIG SERIAL

INT64

該当なし

 

REAL

FLOAT32

該当なし

 

DOUBLE PRECISION

FLOAT64

該当なし

 

CHAR[(M)]

STRING

該当なし

 

VARCHAR[(M)]

STRING

該当なし

 

CHARACTER[(M)]

STRING

該当なし

 

CHARACTER VARYING[(M)]

STRING

該当なし

 

TIMESTAMPTZ, TIMESTAMP WITH TIME ZONE

STRING

io.debezium.time.ZonedTimestamp

タイムゾーン情報を含むタイムスタンプの文字列表現。タイムゾーンは GMT です。

TIMETZ, TIME WITH TIME ZONE

STRING

io.debezium.time.ZonedTime

タイムゾーン情報を含む時間値の文字列表現。タイムゾーンは GMT です。

INTERVAL [P]

INT64

io.debezium.time.MicroDuration
(default)

月平均日に 365.25 / 12.0 式を使用した時間間隔の概算数(マイクロ秒)

INTERVAL [P]

文字列

io.debezium.time.Interval
( interval.handling.modestringに設定されている場合)

パターン P<years>Y<months>M<days>DT<hours>H<minutes>M<seconds>S に続く interval 値の文字列表現(例: P1Y2M3DT4H5M6.78S

BYTEA

BYTES

該当なし

 

JSON, JSONB

STRING

io.debezium.data.Json

JSON ドキュメント、配列、またはスケーラーの文字列表現が含まれます。

XML

STRING

io.debezium.data.Xml

XML ドキュメントの文字列表現が含まれます。

UUID

STRING

io.debezium.data.Uuid

PostgreSQL UUID 値の文字列表現が含まれます。

POINT

STRUCT

io.debezium.data.geometry.Point

2 つの FLOAT64 フィールドを持つ構造 (x,y) が含まれます。それぞれはジオメトリックポイントの座標を表します。

LTREE

STRING

io.debezium.data.Ltree

PostgreSQL LTREE 値の文字列表現が含まれます。

CITEXT

STRING

該当なし

 

INET

STRING

該当なし

 

INT4RANGE

STRING

該当なし

整数の範囲

INT8RANGE

STRING

該当なし

bigint の範囲

NUMRANGE

STRING

該当なし

数値の範囲

TSRANGE

STRING

該当なし

タイムゾーンのないタイムスタンプの範囲の文字列表現が含まれます。

TSTZRANGE

STRING

該当なし

(ローカルシステム)タイムゾーンを持つタイムスタンプの範囲の文字列表現が含まれます。

DATERANGE

STRING

該当なし

日付範囲の文字列表現が含まれます。上限は常に排他的です。

ENUM

STRING

io.debezium.data.Enum

PostgreSQL ENUM 値の文字列表現が含まれます。許可される値のセットは、許可される という名前のスキーマパラメーターで維持 れます。

その他のデータ型マッピングは、以下のセクションで説明します。

2.2.4.7.1. 時間の値

PostgreSQL の TIMESTAMPTZ および TIMETZ データ型(タイムゾーン情報が含まれる)以外に、他の時間型は time.precision.mode 設定プロパティーの値によって異なります。time.precision.mode 設定プロパティーが adaptive (デフォルト) に設定された場合、コネクターは列のデータ型を基に時間型のリテラルおよびセマンティック型を決定し、イベントが正確 にデータベースの値を表すようにします。

PostgreSQL データ型リテラル型 (スキーマ型)セマンティック型 (スキーマ名)注記

DATE

INT32

io.debezium.time.Date

エポックからの日数を表します。

TIME(1), TIME(2), TIME(3)

INT32

io.debezium.time.Time

午前 0 時から経過した時間をミリ秒で表し、タイムゾーン情報は含まれません。

TIME(4), TIME(5), TIME(6)

INT64

io.debezium.time.MicroTime

午前 0 時から経過した時間をマイクロ秒で表し、タイムゾーン情報は含まれません。

TIMESTAMP(1), TIMESTAMP(2), TIMESTAMP(3)

INT64

io.debezium.time.Timestamp

エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。

TIMESTAMP(4), TIMESTAMP(5), TIMESTAMP(6), TIMESTAMP

INT64

io.debezium.time.MicroTimestamp

エポックからの経過時間をマイクロ秒で表し、タイムゾーン情報は含まれません。

time.precision.mode 設定プロパティーが adaptive_time_microseconds に設定されている場合、コネクターは列のデータ型を基に時間型のリテラル型とセマンティック型を決定し、イベントが 正確 にデータベースの値を表すようにします。ただし、すべての TIME フィールドはマイクロ秒としてキャプチャーされます。

PostgreSQL データ型リテラル型 (スキーマ型)セマンティック型 (スキーマ名)注記

DATE

INT32

io.debezium.time.Date

エポックからの日数を表します。

TIME([P])

INT64

io.debezium.time.MicroTime

時間の値をマイクロ秒単位で表し、タイムゾーン情報は含まれません。PostgreSQL では、範囲 が 0 - 6 の精度 P が許可され、マイクロ秒の精度まで保存されます。

TIMESTAMP(1) , TIMESTAMP(2), TIMESTAMP(3)

INT64

io.debezium.time.Timestamp

エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。

TIMESTAMP(4) , TIMESTAMP(5), TIMESTAMP(6), TIMESTAMP

INT64

io.debezium.time.MicroTimestamp

エポックからの経過時間をマイクロ秒で表し、タイムゾーン情報は含まれません。

time.precision.mode 設定プロパティーが connect に設定された場合、コネクターは事前定義された Kafka Connect の論理型を使用します。これは、コンシューマーが組み込みの Kafka Connect の論理型のみを認識し、可変精度の時間値を処理できない場合に便利です。一方、PostgreSQL はマイクロ秒の精度をサポートするため、connect 時間精度モードでコネクターによって生成されたイベントは、データベース列の 少数秒 の精度値が 3 よりも大きい場合に、精度 が失わ れます。

PostgreSQL データ型リテラル型 (スキーマ型)セマンティック型 (スキーマ名)注記

DATE

INT32

org.apache.kafka.connect.data.Date

エポックからの日数を表します。

TIME([P])

INT64

org.apache.kafka.connect.data.Time

午前 0 時からの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。PostgreSQL では、範囲が 0-6 の P が許可され、マイクロ秒の精度まで保存されますが、P > 3 では、このモードでは精度が失われます。

TIMESTAMP([P])

INT64

org.apache.kafka.connect.data.Timestamp

エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。PostgreSQL では、範囲が 0-6 の P が許可され、マイクロ秒の精度まで保存されますが、P > 3 では、このモードでは精度が失われます。