6.3. Debezium Oracle コネクターによるデータ型のマッピング方法
テーブル行で発生する変更を表すために、Debezium Oracle コネクターは、行が存在するテーブルのように構造化された変更イベントを出力します。イベントには、各列の値のフィールドが含まれます。列の値は、この列の Oracle のデータ型に従って表示されます。以下のセクションでは、Oracle データ型をイベントフィールドの リテラル型 および セマンティック型にマッピングする方法を説明します。
- リテラル型
-
Kafka Connect スキーマ型を使用して、値をリテラルで表す方法を記述します。
INT8
、INT16
、INT32
、INT64
、FLOAT32
、FLOAT64
、BOOLEAN
、STRING
、BYTES
、ARRAY
、MAP
、およびSTRUCT
。 - セマンティック型
- フィールドの Kafka Connect スキーマの名前を使用して、Kafka Connect スキーマがフィールドの 意味 をキャプチャーする方法を記述します。
詳細は以下を参照してください。
文字タイプ
以下の表は、コネクターによる基本の文字タイプへのマッピング方法を説明しています。
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
| 該当なし |
|
| 該当なし |
|
| 該当なし |
|
| 該当なし |
|
| 該当なし |
バイナリーおよび文字の LOB 型
以下の表は、コネクターによるバイナリーおよび文字 LOB (Large Object) 型へのマッピング方法を説明しています。
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
| raw バイト。 |
|
| 該当なし |
| 該当なし | このデータタイプはサポートされていません。 |
| 該当なし | このデータタイプはサポートされていません。 |
|
| 該当なし |
| 該当なし | このデータタイプはサポートされていません。 |
Oracle は、CLOB
、NCLOB
、および BLOB
データタイプのカラム値を、SQL ステートメントで明示的に設定または変更された場合にのみ供給します。つまり、変更イベントには、変更されていないCLOB
、NCLOB
、または BLOB
列の値が含まれることはなく、コネクターのプロパティーであるunavailable.value.placeholder
で定義されるプレースホルダが含まれます。
CLOB
、NCLOB
、または BLOB
カラムの値が更新された場合、新しい値は対応する update change イベントの after
部分に含まれ、利用できない値のプレースホルダーは before
部分に使用されます。
数字型
以下の表は、コネクターによる数字型へのマッピング方法を説明しています。
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
| 該当なし |
|
| 該当なし |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
スケールが 0 の
|
|
|
|
|
|
|
|
|
|
|
|
|
ブール値型
Oracle ではネイティブで BOOLEAN
データ型をサポートしていませが、特定のセマンティクスで他のデータ型を使用して、論理的に BOOLEAN
データ型の概念をシミュレートするのが一般的です。
この演算子は、同梱の NumberOneToBooleanConverter
カスタムコンバーターを設定できます。すべての 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
プロパティーが precise
に設定されている場合には コネクターはDECIMAL
と NUMERIC
列すべてに Kafka Connect org.apache.kafka.connect.data.Decimal
論理型を使用します。これはデフォルトのモードです。
ただし、decimal.handling.mode
プロパティーが double
に設定されている場合には、コネクターはスキーマタイプが FLOAT64
の Java の double 値として表します。
string
オプションを使用するように decimal.handling.mode
設定プロパティーを設定することもできます。プロパティーが string
に設定されている場合には、コネクターは DECIMAL
と NUMERIC
の値をスキーマタイプ STRING
でフォーマットされた文字列表現として表します。
Temporal (一時) 型
Oracle の INTERVAL
、TIMESTAMP 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
を connect
に設定していて、データベース列の fractional second precision の値が 3 より大きい場合には a loss of precision という結果になります。
Oracle データ型 | リテラル型 (スキーマ型) | セマンティック型 (スキーマ名) および注記 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|