Einheitliche Typen

Übersicht

Einheitliche Typen sind die Datentypen, die in den Avro- oder JSON-Ereignissen angezeigt werden. Sie sind eine Datastream-spezifische, einheitliche Darstellung eines Datentyps über mehrere Datenquellen hinweg, z. B. eine Oracle-Datenbank oder MySQL-Datenbank.

Bei den einheitlichen Typen handelt es sich um die Obermenge aller Typdarstellungen für alle unterstützten Quelltypen, die den ursprünglichen Quelltyp in allgemeiner, aber verlustfreier Weise darstellen.

In den folgenden Tabellen ist Folgendes aufgeführt:

  • Die mit Datastream verknüpften einheitlichen Typen
  • Die Zuordnungen zwischen den Datentypen für eine Oracle-Datenbank oder einer MySQL-Datenbank und den einheitlichen Datastream-Typen

Einheitliche Datastream-Typen

Typname Info Avro-Definition JSON-Definition
BOOLEAN Boolesch Boolesch Boolesch
BYTES Eine Folge nicht signierter Byte Byte String
DECIMAL (p,s) Vorzeichenbehaftete Dezimalzahl mit beliebiger Genauigkeit Ein logischer Dezimaltyp Zahl
DOUBLE 64-Bit-Gleitkommazahlen double Zahl
FLOAT 32-Bit-Gleitkommazahlen float Zahl
INTEGER Eine 32-Bit-Ganzzahl Ganzzahl Zahl
LONG Eine 64-Bit-Ganzzahl long Zahl
NUMBER Ein numerischer Datentyp

Ein benutzerdefinierter logischer Typ


{
  "type": "string",
  "logicalType": "number"
}
String
RECORD Ein vollständig strukturierter Datentyp, z. B. ein benutzerdefinierter Datentyp Datensatz Objekt
STRING Eine unbegrenzte Stringlänge String String
TIME_INTERVAL Anzahl der zwischen zwei Ereignissen verstrichenen Mikrosekunden

Ein benutzerdefinierter logischer Typ


{
  "type": "long",
  "logicalType": "time-interval-micros"
}
long
TIMESTAMP Anzahl der Millisekunden oder Mikrosekunden seit der Epoche, unabhängig von der Zeitzone Ein logischer Zeitstempeltyp String [ISO-8601]
TIMESTAMP WITH TIME ZONE Wie viele Millisekunden oder Mikrosekunden seit der Epoche mit einem bestimmten Zeitzonenversatz vergangen sind

Ein benutzerdefinierter Typ


{
  "type": "record",
  "name": "timestampTz",
  "fields": [
    {"name": "timestamp",
     "type": "long"
     "logicalType": "timestamp-micros"},
    {"name": "offset",
     "type": "long"
     "logicalType": "time-millis"}
  ]
}
    
String [ISO-8601]
UNION Ein variierender Datentyp Union array
UNSUPPORTED Ein nicht unterstützter Datentyp

Ein benutzerdefinierter logischer Typ


{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR Ein String mit einer maximalen Länge von n Zeichen

Ein benutzerdefinierter logischer Typ


{
  "type": "string",
  "logicalType": "varchar"
  "length": N
}
String

Oracle-Datentypen den einheitlichen Datastream-Typen zuordnen

Oracle-Datentyp Einheitlicher Datastream-Typ
ANYDATA Unsupported
BFILE STRING
BINARY DOUBLE DOUBLE
BINARY FLOAT FLOAT
BLOB Unsupported
CHAR VARCHAR
CLOB Unsupported
DATE TIMESTAMP
DOUBLE PRECISION DOUBLE
FLOAT(p) DOUBLE
INTERVAL DAY TO SECOND Unsupported
INTERVAL YEAR TO MONTH Unsupported
LONG/LONG RAW Unsupported
NCHAR STRING
NCLOB Unsupported
NUMBER NUMBER
NUMBER(p,s<=0)

Wenn p<=18, dann LONG. Wenn p>18 oder p=*, dann NUMBER.

NUMBER(p,s>0)

Wenn p=*, dann DECIMAL(38,s), andernfalls DECIMAL(p,s).

NVARCHAR2 STRING
RAW BYTES
ROWID STRING
SMALLINT INTEGER
TIMESTAMP TIMESTAMP
TIMESTAMP WITH TIME ZONE TIMESTAMP WITH TIME ZONE
UDT (benutzerdefinierter Typ) Nicht unterstützt
UROWID Nicht unterstützt
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE Unsupported

MySQL-Datentypen zu einheitlichen Datastream-Typen zuordnen

MySQL-Datentyp Einheitlicher Datastream-Typ
BIGINT(size) LONG
BINARY(size) STRING (hex encoded)
BIT(size) LONG
BLOB(size) STRING (hex encoded)
BOOL INTEGER
CHAR(size) STRING
DATE TIMESTAMP
DATETIME(fsp) TIMESTAMP
DECIMAL(size, d) DECIMAL(size, d)
DOUBLE(size, d) DOUBLE
ENUM(val1, val2, val3, ...) STRING
FLOAT(p) FLOAT
FLOAT(size, d) FLOAT
INTEGER(size) INTEGER
LONGBLOB STRING (hex encoded)
LONGTEXT STRING (hex encoded)
MEDIUMBLOB STRING (hex encoded)
MEDIUMINT(size) INTEGER
MEDIUMTEXT STRING
SET(val1, val2, val3, ...) STRING
SMALLINT(size) INTEGER
TEXT(size) STRING
TIME(fsp) TIME_INTERVAL
TIMESTAMP(fsp) TIMESTAMP
TINYBLOB STRING (hex encoded)
TINYINT(size) INTEGER
TINYTEXT STRING
VARBINARY(size) STRING (hex encoded)
VARCHAR STRING
YEAR INTEGER