统一类型

概览

统一类型是 Avro 或 JSON 事件中显示的数据类型。它们是跨多个数据源的、特定于 Datastream 的统一数据类型表示形式,例如 Oracle 数据库或 MySQL 数据库。

统一类型是所有受支持来源类型中的所有类型表示形式的超集,它们以通用但无损的方式表示原始来源类型。

下表列出了:

  • 与 Datastream 关联的统一类型
  • Oracle 数据库或 MySQL 数据库的数据类型与 Datastream 统一类型之间的映射

Datastream 统一类型

类型名称 信息 Avro 定义 JSON 定义
BOOLEAN 布尔值 布尔值 布尔值
BYTES 无符号字节序列 字节 字符串
DECIMAL (p,s) 任意精度的带符号小数 十进制逻辑类型数字
DOUBLE 64 位浮点数 double 数字
FLOAT 32 位浮点数 float 数字
INTEGER 32 位整数 整数 数字
LONG 64 位整数 长整型 数字
NUMBER 数值数据类型

自定义逻辑类型


{
  "type": "string",
  "logicalType": "number"
}
字符串
RECORD 完全结构化数据类型(例如,用户定义的数据类型) Record 对象
STRING 字符串长度无限 字符串 字符串
TIME_INTERVAL 两个事件之间经过的微秒数

自定义逻辑类型


{
  "type": "long",
  "logicalType": "time-interval-micros"
}
长整型
TIMESTAMP 自计时原点以来经过的毫秒数或微秒数(无论时区如何) 时间戳逻辑类型 字符串 [ISO-8601]
TIMESTAMP WITH TIME ZONE 自计时原点以来经过的毫秒数或微秒数,具有特定时区偏移量

自定义类型


{
  "type": "record",
  "name": "timestampTz",
  "fields": [
    {"name": "timestamp",
     "type": "long"
     "logicalType": "timestamp-micros"},
    {"name": "offset",
     "type": "long"
     "logicalType": "time-millis"}
  ]
}
    
字符串 [ISO-8601]
UNION 不同的数据类型 联合 数组
UNSUPPORTED 不受支持的数据类型

自定义逻辑类型


{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR 最大长度为 n 个字符的字符串

自定义逻辑类型


{
  "type": "string",
  "logicalType": "varchar"
  "length": N
}
字符串

将 Oracle 数据类型映射到 DataStream 统一类型

Oracle 数据类型 Datastream 统一类型
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)

如果 p<=18,则 LONG。如果 p>18 或 p=*,则 NUMBER

NUMBER(p,s>0)

如果 p=*,则为 DECIMAL(38,s),否则为 DECIMAL(p,s)

NVARCHAR2 STRING
RAW BYTES
ROWID STRING
SMALLINT INTEGER
TIMESTAMP TIMESTAMP
TIMESTAMP WITH TIME ZONE TIMESTAMP WITH TIME ZONE
UDT(用户定义的类型) 不支持
UROWID 不支持
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE Unsupported

将 MySQL 数据类型映射到 DataStream 统一类型

MySQL 数据类型 Datastream 统一类型
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