6.3. Debezium Oracle コネクターによるデータ型のマッピング方法
テーブル行で発生する変更を表すには、Debezium Oracle コネクターは、行が存在するテーブルのように構造化された変更イベントを出力します。イベントには、各列の値のフィールドが含まれます。列の値は、列の Oracle データ型に従って表現されます。以下のセクションでは、oracle データ型をイベントフィールドの リテラル型 および セマンティック型 にマッピングする方法を説明します。
- リテラル型
-
Kafka Connect スキーマタイプ
INT8
、INT16
、INT64、INT64
、FLOAT
、32
BOOLEAN
、STRING、BYTES、ARRAY、
MAP
、
およびSTRUCT
を使用して、
値をリテラル
で表す方法を記述します。 - セマンティック型
- フィールドの Kafka Connect スキーマの名前を使用して、Kafka Connect スキーマがフィールドの 意味 をキャプチャーする方法を記述します。
詳細は以下を参照してください。
文字型
以下の表は、コネクターによる基本文字型のマッピング方法を説明しています。
表6.3 Oracle の基本文字型のマッピング
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
| 該当なし |
|
| 該当なし |
|
| 該当なし |
|
| 該当なし |
|
| 該当なし |
バイナリーおよび文字 LOB 型
以下の表は、コネクターによるバイナリーおよび文字 LOB 型のマッピング方法を説明しています。
表6.4 Oracle バイナリーおよび文字 LOB 型のマッピング
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
| 該当なし | このデータ型はサポートされていません。 |
| 該当なし | このデータ型はサポートされていません。 |
| 該当なし | このデータ型はサポートされていません。 |
| 該当なし | このデータ型はサポートされていません。 |
| 該当なし | このデータ型はサポートされていません。 |
| 該当なし | このデータ型はサポートされていません。 |
数値型
以下の表は、コネクターによる数値型のマッピング方法を説明しています。
表6.5 Oracle 数値データ型のマッピング
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
| 該当なし |
|
| 該当なし |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 のスケールがある
|
|
|
|
|
|
|
|
|
|
|
|
|
ブール値型
Oracle はネイティブに BOOLEAN
データ型をサポートしていません。ただし、特定のセマンティクスで他のデータ型を使用して、論理 BOOLEAN
データ型の概念をシミュレートするのが一般的です。
演算子は、すべての NUMBER(1)
列を BOOLEAN
にマッピングする
、または selector
パラメーターが設定されている場合は、正規表現のコンマ区切りリストを使用して列のサブセットを列挙できます。
以下は ConfigMap の例になります。
converters=boolean boolean.type=io.debezium.connector.oracle.converters.NumberOneToBooleanConverter boolean.selector=.*MYTABLE.FLAG,.*.IS_ARCHIVED
10 進数型
Oracle コネクター設定プロパティーの設定は decimal.handling.mode
で、コネクターが 10 進数型をマッピングする方法を決定します。
decimal.handling.mode
プロパティーが exact に設定されている場合 、
コネクターはすべての DECI MAL
および NUMERIC
列に Kafka Connect org.apache.kafka.connect.data.Decimal
logical type を使用します。これがデフォルトのモードです。
ただし 、10 進数.handling.mode
プロパティーが double
に設定された場合、コネクターはスキーマ type FLOAT64
を持つ Java の二重値として表します。
string
オプションを使用するように decimal.handling.mode
設定プロパティーを設定することもできます。プロパティーが string
に設定された場合、コネクターは DECI MAL
および NUMERIC
値をスキーマタイプ STRING
でフォーマットされた文字列表現として表します。
時間型
Oracle の INTERVAL
WITH WITH TIME ZONE
および TIMESTAMP WITH LOCAL TIME ZONE
以外の時間タイプは、他の時間型が time.precision.mode
設定プロパティーの値により異なります。
time.precision.mode
設定プロパティーが adaptive (
デフォルト)に設定されている場合、コネクターは列のデータ型定義に基づいて一時的な型のリテラルおよびセマンティック型を決定し、イベントがデータベースの値 を正確に 表すようにします。
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
time.precision.mode
設定プロパティーが connect
に設定されている場合、コネクターは事前定義された Kafka Connect の論理型を使用します。これは、コンシューマーが組み込みの Kafka Connect の論理型のみを認識し、可変精度の時間値を処理できない場合に便利です。Oracle がサポートする精度レベルは、Kafka Connect サポートの論理型を超過するため、time.precision.mode
を設定して接続する場合は 、
データベース列の分 数の精度 値が 3 よりも大きい場合に、精度の結果が失われます。
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|