Elementos do Cassandra Query Language (CQL) no Amazon Keyspaces - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Elementos do Cassandra Query Language (CQL) no Amazon Keyspaces

Saiba mais sobre os elementos do Cassandra Query Language (CQL) que são compatíveis com o Amazon Keyspaces, incluindo identificadores, constantes, termos e tipos de dados.

Identificadores

Identificadores (ou nomes) são usados para identificar tabelas, colunas e outros objetos. Um identificador pode ser citado ou não. O seguinte se aplica.

identifier ::= unquoted_identifier | quoted_identifier unquoted_identifier ::= re('[a-zA-Z][a-zA-Z0-9_]*') quoted_identifier ::= '"' (any character where " can appear if doubled)+ '"'

Constantes

As seguintes constantes são definidas.

constant ::= string | integer | float | boolean | uuid | blob | NULL string ::= '\'' (any character where ' can appear if doubled)+ '\'' '$$' (any character other than '$$') '$$' integer ::= re('-?[0-9]+') float ::= re('-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9+])?') | NAN | INFINITY boolean ::= TRUE | FALSE uuid ::= hex{8}-hex{4}-hex{4}-hex{4}-hex{12} hex ::= re("[0-9a-fA-F]") blob ::= '0' ('x' | 'X') hex+

Termos

Um termo denota o tipo de valores que são compatíveis. Os termos são definidos pelo seguinte.

term ::= constant | literal | function_call | arithmetic_operation | type_hint | bind_marker literal ::= collection_literal | tuple_literal function_call ::= identifier '(' [ term (',' term)* ] ')' arithmetic_operation ::= '-' term | term ('+' | '-' | '*' | '/' | '%') term

Tipos de dados

O Amazon Keyspaces é compatível com os seguintes tipos de dados:

Tipos de string

Tipo de dados Descrição

ascii

Representa uma cadeia de caracteres ASCII.

text

Representa uma cadeia de caracteres codificada UTF-8.

varchar

Representa uma string codificada em UTF-8 (varchar é um alias para text).

Tipos numéricos

Tipo de dados Descrição

bigint

Representa um comprimento assinado de 64 bits.

counter

Representa um contador de números inteiros assinado de 64 bits. Para ter mais informações, consulte Contadores.

decimal

Representa um decimal de precisão variável.

double

Representa um ponto flutuante IEEE 754 de 64 bits.

float

Representa um ponto flutuante IEEE 754 de 32 bits.

int

Representa um int assinado de 32 bits.

varint

Representa um número inteiro de precisão arbitrária.

Contadores

Uma counter coluna contém um número inteiro assinado de 64 bits. O valor do contador é incrementado ou diminuído usando a instrução UPDATE e não pode ser definido diretamente. Isso torna as colunas counter úteis para rastrear contagens. Por exemplo, você pode usar contadores para rastrear o número de entradas em um arquivo de log ou o número de vezes que uma publicação foi visualizada em uma rede social. As restrições a seguir se aplicam às colunas counter:

  • Uma coluna do tipo counter não pode fazer parte do primary key de uma tabela.

  • Em uma tabela que contém uma ou mais colunas do tipo counter, todas as colunas dessa tabela devem ser do tipo counter.

Nos casos em que uma atualização do contador falha (por exemplo, devido ao tempo limite ou à perda de conexão com o Amazon Keyspaces), o cliente não sabe se o valor do contador foi atualizado. Se a atualização for repetida, a atualização do valor do contador poderá ser aplicada pela segunda vez.

Tipo Blob

Tipo de dados Descrição

blob

Representa bytes arbitrários.

Tipo booliano

Tipo de dados Descrição

boolean

Representa true ou false.

Tipos relacionados ao tempo

Tipo de dados Descrição

timestamp

Número inteiro assinado de 64 bits representando a data e a hora desde a época (1º de janeiro de 1970 às 00:00:00 GMT) em milissegundos.

timeuuid

Representa um UUID da versão 1.

Tipos de coleção

Tipo de dados Descrição

list

Representa uma coleção ordenada de elementos literais.

map

Representa uma coleção não ordenada de pares de chave-valor.

set

Representa uma coleção não ordenada de um ou mais elementos literais.

Você declara uma coluna de coleta usando o tipo de coleta seguido por outro tipo de dados (por exemplo, TEXT ou INT) entre parênteses angulares “<>”. Você pode criar uma coluna com um SET de TEXT, ou você pode criar um par de valor-chave MAP de TEXT e INT, conforme mostrado no exemplo a seguir.

SET <TEXT> MAP <TEXT, INT>

Uma coleção não congelada permite que você faça atualizações em cada elemento individual da coleção. Os carimbos de data e hora do lado do cliente e as configurações de tempo de vida (TTL) são armazenados para elementos individuais.

Quando você usa a palavra-chave FROZEN em um tipo de coleção, os valores da coleção são serializados em um único valor imutável, e o Amazon Keyspaces os trata como um BLOB. Esta é uma coleção congelada. Uma declaração INSERT ou UPDATE sobrescreve toda a coleção congelada. Você não pode fazer atualizações em elementos individuais dentro de uma coleção congelada.

Os carimbos de data/hora do lado do cliente e as configurações de tempo de vida (TTL) se aplicam a toda a coleção congelada, não a elementos individuais. Colunas da coleção Frozen podem fazer parte de uma tabela de PRIMARY KEY.

Você pode aninhar coleções congeladas. Por exemplo, você pode definir o MAP dentro de um SET se MAP estiver usando a palavra-chave FROZEN, conforme mostrado no exemplo a seguir.

SET <FROZEN> <MAP <TEXT, INT>>>

Por padrão, o Amazon Keyspaces suporta o aninhamento de até cinco níveis de coleções congeladas. Para ter mais informações, consulte Service Quotas do Amazon Keyspaces. Para obter mais informações sobre diferenças funcionais com o Apache Cassandra, consulte Coleções FROZEN. Para obter mais informações sobre sintaxe de CQL, consulte CRIAR TABELA e ALTER TABLE.

Tipo de tupla

O tipo de dados tuple representa um grupo limitado de elementos literais. Você pode usar uma tupla como alternativa a user defined type. Você não precisa usar a palavra-chave FROZEN para tuplas. Isso ocorre porque uma tupla está sempre congelada e você não pode atualizar elementos individualmente.

Outros tipos

Tipo de dados Descrição

inet

Uma cadeia de caracteres representando um endereço IP, no formato IPv4 ou IPv6.

Estático

Em uma tabela do Amazon Keyspaces com colunas de agrupamento, você pode usar a STATIC palavra-chave para criar uma coluna estática de qualquer tipo.

A instrução a seguir é um exemplo disso.

my_column INT STATIC

Para obter mais informações sobre como trabalhar com colunas estáticas, consulteColunas estáticas no Amazon Keyspaces.

Codificação JSON dos tipos de dados do Amazon Keyspaces

O Amazon Keyspaces oferece os mesmos mapeamentos de tipos de dados JSON que o Apache Cassandra. A tabela a seguir descreve os tipos de dados que o Amazon Keyspaces aceita em declarações INSERT JSON e os tipos de dados que o Amazon Keyspaces usa ao retornar dados com a declaração SELECT JSON.

Para tipos de dados de campo único como float, int, UUID edate, você também pode inserir dados como string. Para tipos de dados compostos e coleções, comotuple,map elist, você também pode inserir dados como JSON ou codificadosJSON string.

Tipo de dados do JSON Tipos de dados aceitos em declarações INSERT JSON Tipos de dados retornados em declarações SELECT JSON Observações

ascii

string string

Usa \u escape de caracteres JSON.

bigint

integer, string integer

A string deve ser um número inteiro válido de 64 bits.

blob

string string

A string deve começar com 0x seguida por um número par de dígitos hexadecimais.

boolean

boolean, string boolean

String deve ser true ou false.

date

string string

Data em formatoYYYY-MM-DD, fuso horário UTC.

decimal

integer, float, string float

Pode exceder a precisão de ponto flutuante IEEE-754 de 32 bits ou 64 bits no decodificador do lado do cliente.

double

integer, float, string float

A string deve ser um número inteiro ou flutuante válido.

float

integer, float, string float

A string deve ser um número inteiro ou flutuante válido.

inet

string string

Endereço IPv4 ou IPv6.

int

integer, string integer

A string deve ser um número inteiro válido de 32 bits.

list

list, string list

Usa a representação nativa da lista JSON.

map

map, string map

Usa a representação nativa do mapa JSON.

smallint

integer, string integer

A string deve ser um número inteiro válido de 16 bits.

set

list, string list

Usa a representação nativa da lista JSON.

text

string string

Usa \u escape de caracteres JSON.

time

string string

Hora do dia em formato HH-MM-SS[.fffffffff].

timestamp

integer, string string

Um carimbo de data/hora. As constantes de string permitem que você armazene carimbos de data/hora como datas. Os carimbos de data com formato YYYY-MM-DD HH:MM:SS.SSS são retornados.

timeuuid

string string

Tipo 1 UUID. Consulte constants para o formato UUID.

tinyint

integer, string integer

A string deve ser um número inteiro válido de 8 bits.

tuple

list, string list

Usa a representação nativa da lista JSON.

uuid

string string

Consulte constants para o formato UUID.

varchar

string string

Usa \u escape de caracteres JSON.

varint

integer, string integer

Comprimento variável; pode ultrapassar números inteiros de 32 bits ou 64 bits no decodificador do lado do cliente.