4.3.7. データタイプ
上記のように、SQL Server コネクターは、行が存在するテーブルのように構造化されたイベントを含む行への変更を表します。イベントには各列値のフィールドが含まれ、その値がイベントでどのように表されるかは、列の SQL データ型によって異なります。本セクションでは、このマッピングを説明します。
以下の表は、各 SQL Server データ型をイベントのフィールド内の リテラル 型とセマンティック型 にマッピングする方法を示しています。ここで リテラル型 は、Kafka Connect スキーマタイプ( INT8
、INT16
、INT32
INT64
、FLOAT32
、FLOAT64
、BOOLEAN
、STRING
、BYTES
、ARRAY
、MAP
、STRUCT
)を使用して値をリテラルで表す方法を記述します。セマンティック型 は、フィールドの Kafka Connect スキーマの名前を使用して Kafka Connect スキーマがフィールドの 意味 をキャプチャーする方法を記述します。
SQL Server データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) | 注記 |
---|---|---|---|
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
| 該当なし | |
|
|
| XML ドキュメントの文字列表現が含まれます。 |
|
|
| タイムゾーン情報を含むタイムスタンプの文字列表現。タイムゾーンは GMT です。 |
その他のデータ型マッピングは、以下のセクションで説明します。
列のデフォルト値がある場合は、対応するフィールドの Kafka Connect スキーマに伝達されます。変更メッセージには、フィールドのデフォルト値が含まれます (明示的な列値が指定されていない場合)。そのため、スキーマからデフォルト値を取得する必要はほとんどありません。
4.3.7.1. 時間値
タイムゾーン情報が含まれる SQL Server の DATETIMEOFFSET
以外の時間型は、time.precision.mode
設定プロパティーの値によって異なります。time.precision.mode
設定プロパティーが adaptive
(デフォルト) に設定された場合、コネクターは列のデータ型を基に時間型のリテラルおよびセマンティック型を決定し、イベントが正確 にデータベースの値を表すようにします。
SQL Server データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) | 注記 |
---|---|---|---|
|
|
| エポックからの日数を表します。 |
|
|
| 午前 0 時から経過した時間をミリ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| 午前 0 時から経過した時間をマイクロ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| 午前 0 時から経過した時間をナノ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| エポックからの経過時間をマイクロ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| エポックからの経過時間をナノ秒で表し、タイムゾーン情報は含まれません。 |
time.precision.mode
設定プロパティーが connect
に設定された場合、コネクターは事前定義された Kafka Connect の論理型を使用します。これは、コンシューマーが組み込みの Kafka Connect の論理型のみを認識し、可変精度の時間値を処理できない場合に便利です。一方で、SQL Server はマイクロ秒の 10 分の 1 の精度をサポートするため、connect
時間精度モードでコネクターによって生成されたイベントは、データ列の 少数秒の精度 値が 3 よりも大きい場合に 精度が失われます。
SQL Server データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) | 注記 |
---|---|---|---|
|
|
| エポックからの日数を表します。 |
|
|
|
午前 0 時からの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。SQL Server では、範囲 0 - 7 の |
|
|
| エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。 |
|
|
| エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。 |
|
|
|
エポックからの経過時間をミリ秒で表し、タイムゾーン情報は含まれません。SQL Server では、範囲 0 - 7 の |
4.3.7.1.1. タイムスタンプ値
DATETIME
、SMALLDATETIME
および DATETIME2
タイプは、タイムゾーン情報のないタイムスタンプを表します。このような列は、UTC を基にして同等の Kafka Connect 値に変換されます。たとえば、2018-06-20 15:13:16.945104 という DATETIME2
の値は、1529507596945104 という値の io.debezium.time.MicroTimestamp
で表されます。
Kafka Connect および Debezium を実行している JVM のタイムゾーンは、この変換には影響しないことに注意してください。