Tipos unificados

Visão geral

Os tipos unificados são os tipos de dados que aparecem nos eventos Avro ou JSON. Eles são uma representação unificada e específica do Datastream de um tipo de dados em várias fontes, como um banco de dados Oracle ou MySQL.

Os tipos unificados são o superconjunto de todas as representações de tipos compatíveis, que representam o tipo de origem original de maneira genérica, mas sem perdas.

A tabela a seguir lista:

  • Os tipos unificados associados ao Datastream
  • Os mapeamentos entre os tipos de dados para um banco de dados Oracle ou um banco de dados MySQL e os tipos unificados no Datastream

Tipos unificados de fluxo de dados

Nome do tipo Informações Definição do Avro Definição de JSON
BOOLEAN boolean boolean boolean
BYTES Uma sequência de bytes não assinados bytes string
DECIMAL (p,s) Um número decimal com precisão arbitrária Um tipo lógico decimal número
DOUBLE números de ponto flutuante de 64 bits duplo número
FLOAT números de ponto flutuante de 32 bits float número
INTEGER Um número inteiro de 64 bits int número
LONG Um número inteiro de 64 bits long número
NUMBER Um tipo de dados numéricos

Um tipo lógico personalizado


{
  "type": "string",
  "logicalType": "number"
}
string
RECORD Um tipo de dados totalmente estruturado, por exemplo, um tipo de dados definido pelo usuário Record objeto
STRING Um comprimento de string ilimitado string string
TIME_INTERVAL Quantos microssegundos se passaram entre dois eventos

Um tipo lógico personalizado


{
  "type": "long",
  "logicalType": "time-interval-micros"
}
long
TIMESTAMP Quantos milissegundos ou microssegundos se passaram desde a época, independentemente do fuso horário Um tipo lógico de carimbo de data/hora String (ISO 8601)
TIMESTAMP WITH TIME ZONE Quantos milissegundos ou microssegundos se passaram desde o período com uma diferença de fuso horário específica

Um tipo personalizado


{
  "type": "record",
  "name": "timestampTz",
  "fields": [
    {"name": "timestamp",
     "type": "long"
     "logicalType": "timestamp-micros"},
    {"name": "offset",
     "type": "long"
     "logicalType": "time-millis"}
  ]
}
    
String (ISO 8601)
UNION Um tipo de dados variável. União matriz
UNSUPPORTED Um tipo de dados não compatível

Um tipo lógico personalizado


{
  "type": "null",
  "logicalType": "unsupported"
}
null
VARCHAR Uma string com comprimento máximo de n caracteres.

Um tipo lógico personalizado


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

Mapear tipos de dados Oracle para tipos unificados do Datastream

Tipo de dados Oracle Tipo unificado do 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)

Se p<=18, então LONG. Se p>18 ou p=*, então NUMBER.

NUMBER(p,s>0)

Se p=*, em seguida, DECIMAL(38,s), caso contrário DECIMAL(p,s).

NVARCHAR2 STRING
RAW BYTES
ROWID STRING
SMALLINT INTEGER
TIMESTAMP TIMESTAMP
TIMESTAMP WITH TIME ZONE TIMESTAMP WITH TIME ZONE
UDT (tipo definido pelo usuário) Sem suporte
UROWID Sem suporte
VARCHAR VARCHAR
VARCHAR2 VARCHAR
XMLTYPE Unsupported

Mapear tipos de dados MySQL para tipos unificados do Datastream

Tipo de dados do MySQL Tipo unificado do 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