Link para a página inicial da série: https://www.couchbase.com/blog/couchbase-oracle-developers-part-2-architecture/

Como parte da remodelagem de dados, ao passar do modelo relacional para o modelo JSON, você terá de considerar o mapeamento do tipo de dados. No Oracle, você terá de criar e declarar os tipos de cada coluna explicitamente antes de carregar os dados ou escrever consultas. No Couchbase, você simplesmente se conforma com a sintaxe JSON e a interpretação do tipo de dados é automática e implícita. Esta é a visão geral dos mapeamentos, da conversão e da aritmética desses tipos de dados.

 

Oráculo Couchbase
Modelo Relacional, objeto-relacional JSON modelo com N1QL (SQL para JSON)
Tipos de dados https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483 https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/datatypes.html
Tipos de dados String CHAR, VARCHAR, VARCHAR2, NCHAR, NVARCHAR, LOONGVARCHAR String, com até 20 MB de comprimento. Todos os dados de cadeia de caracteres em JSON são Unicode.
Tipos de dados de data e hora DATE, TIME, TIMESTAMP, todos esses com TIMEZONE, INTERVALO Data, Hora, Carimbo de data/hora, todos eles com fusos horários devem ser representados em Formato ISO 8601 e salvos como cadeias de caracteres. O N1QL tem funções abrangentes para formatação, extração, conversão e aritmética.

Este artigo aborda detalhadamente a conversão e a aritmética neles.

https://www.couchbase.com/blog/dates-timestamps-timezones-comparative-study-oracle-n1ql-support-date-time-feature-part-1/

Booleano BOOLEÃO Booleano 

verdadeiro e falso são automaticamente interpretados como um valor booleano.

Numérico NÚMERO

DECIMAL

BIGINT

SMALLINT

INTEGER

FLOAT

REAL

DUPLO

Dados numéricos: podem ser inteiros, fracionários ou um expoente. Aqui estão os intervalos: https://docs.couchbase.com/server/current/analytics/9_data_type.html
Tipos de dados binários BINÁRIO

VARBINÁRIO

LONGVARBINARY

Você pode armazenar o documento inteiro como binário ou codificar o binário como valores base64.
Tipos de dados de objetos grandes
BLOB, RAW, LONG_RAW Cada documento pode ter até 20 MB. Os dados binários podem ser codificados via BASE64
CLOB Cada documento pode ter até 20 MB. 
Tipos ABSTRACT, TABELAS NESTADAS Suporte integrado a objetos, matrizes, matrizes de objetos, objetos de matrizes. Não há suporte para tipos de dados opacos definidos pelo usuário.
XML Alguém ainda usa XML em bancos de dados? ;-) 
QUALQUER TIPO O ANY TYPE foi inventado para tornar as rotinas do Oracle flexíveis, em termos de tipos que manipulam como parâmetros e tipos de retorno. 

No modelo JSON, 

Objetos CRIE os tipos de objetos e as colunas associadas a eles de forma explícita: CRIAR TIPO tipo_de_pessoa AS OBJETO

URL: https://docs.oracle.com/en/database/oracle/oracle-database/18/adobj/key-features-object-relational-model.html#GUID-0C7CE261-467B-4F8B-A04D-B0900E1FB284

Os OBJETOS são incorporados ao modelo JSON com qualquer número de níveis aninhados com qualquer tipo de dados, objetos ou matrizes.
Matrizes O VARRAY pode criar uma matriz de um tipo específico e, em seguida, usar esse tipo como o tipo de uma coluna. 

URL: https://docs.oracle.com/cd/B28359_01/appdev.111/b28371/adobjcol.htm#i468598

A matriz é um cidadão de primeira classe no modelo de dados JSON e pode ser usada para qualquer valor. Cada matriz pode ser composta de escalares de qualquer tipo: escalares, objetos, matrizes etc.

"A": [1, "X", [3, 4]]

"B": [{"x":1}, {"x":2}]

Notas adicionais

Tipos Date e Datetime.

O Oracle e outros RDBMS têm tipos de dados abrangentes para lidar com dados relacionados a tempo e manipulá-los. O JSON não tem um tipo de data ou data e hora. Escolhemos o tipo ISO 8601 . A ideia é armazenar os dados relacionados a data e hora em um formato de cadeia de caracteres, em conformidade com a norma ISO 8601, e depois manipulá-los de forma consistente.

Conversão de chave primária em chave de documento.

A chave do documento do Couchbase é sempre menor que 255 bytes e geralmente é uma string. O RDBMS pode ter uma chave primária de uma única coluna ou de várias colunas (composta) para uma tabela. Uma forma comum de conversão é simplesmente ter um separador entre as partes individuais após a conversão de cada parte em uma string. A chave do documento deve ser exclusiva de um bucket e, portanto, normalmente é prefixada com o tipo de tabela (coleção). Veja a blog com exemplos de como fazer isso corretamente.

 

Autor

Postado por Keshav Murthy

Keshav Murthy é vice-presidente de P&D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experiência em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&D de SQL e NoSQL na IBM Informix. Recebeu dois prêmios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav é bacharel em Ciência da Computação e Engenharia pela Universidade de Mysore, Índia, detém dez patentes nos EUA e tem três patentes pendentes nos EUA.

Deixar uma resposta