Tipos de dados compatíveis e regras de nomenclatura no Amazon DynamoDB - Amazon DynamoDB

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á.

Tipos de dados compatíveis e regras de nomenclatura no Amazon DynamoDB

Esta seção descreve as regras de nomenclatura do Amazon DynamoDB e os vários tipos de dados compatíveis com o DynamoDB. Há limites que se aplicam a tipos de dados. Para ter mais informações, consulte Tipos de dados.

Regras de nomenclatura

Tabelas, atributos e outros objetos no DynamoDB devem ter nomes. Os nomes devem ser concisos e significativos; por exemplo, nomes como Products, Books e Authors são autoexplicativos.

Estas são as regras de nomenclatura do DynamoDB:

  • Todos os nomes devem ser codificados usando UTF-8 e diferenciam maiúsculas de minúsculas.

  • Nomes de tabelas e nomes de índices devem ter entre 3 e 255 caracteres e podem conter somente os seguintes caracteres:

    • a-z

    • A-Z

    • 0-9

    • _ (sublinhado)

    • - (traço)

    • . (ponto)

  • Os nomes de atributos devem ter pelo menos um caractere e no mínimo 64 KB. Manter os nomes dos atributos o mais curtos possível é considerada uma prática recomendada. Isso ajuda a reduzir as unidades de solicitação de leitura consumidas, pois os nomes dos atributos são incluídos na medição do uso do armazenamento e do throughput.

    Veja as exceções a seguir. Estes nomes de atributo não devem ser maiores do que 255 caracteres:

    • Nomes de chave de partição de índices secundários

    • Nomes de chave de classificação de índices secundários

    • Nomes de qualquer atributo projetado especificado pelo usuário (aplicável apenas a índices secundários locais)

Palavras reservadas e caracteres especiais

O DynamoDB tem uma lista de palavras reservadas e caracteres especiais. Para obter uma lista completa, consulte Palavras reservadas no DynamoDB. Além disso, os seguintes caracteres têm um significado especial no DynamoDB: # (hash) e : (dois-pontos).

Embora o DynamoDB permita usar essas palavras reservadas e caracteres especiais nos nomes, é recomendável evitar, pois será necessário definir variáveis de espaço reservado sempre que esses nomes forem utilizados em uma expressão. Para ter mais informações, consulte Nomes de atributos de expressão no DynamoDB.

Tipos de dados

O DynamoDB oferece suporte a vários tipos de dados diferentes para atributos dentro de uma tabela. Eles podem ser categorizados da seguinte maneira:

  • Tipos escalares: um tipo escalar pode representar exatamente um valor. Os tipos escalares são número, string, binário, booliano e nulo.

  • Tipos de documento: um tipo de documento pode representar uma estrutura complexa com atributos aninhados, como aqueles que você encontraria em um documento JSON. Os tipos de documentos são lista e mapa.

  • Tipos de conjuntos: um tipo de conjunto pode representar vários valores escalares. Os tipos de conjuntos são conjunto de strings, conjunto de números e conjunto de binários.

Ao criar uma tabela ou um índice secundário, você deve especificar os nomes e os tipos de dados de cada atributo de chave primária (chave de partição e chave de classificação). Além disso, cada atributo de chave primária deve ser definido como o tipo string, número ou binário.

O DynamoDB é um banco de dados NoSQL sem esquema. Isso significa que, além dos atributos de chave primária, não é necessário definir nenhum atributo nem tipos de dados ao criar tabelas. Por comparação, bancos de dados relacionais exigem que você defina os nomes e os tipos de dados de cada coluna ao criar uma tabela.

As seguintes descrições representam cada tipo de dados, juntamente com exemplos no formato JSON.

Tipos escalares

Os tipos escalares são número, string, binário, booliano e nulo.

Número

Números podem ser positivos, negativo ou zero. Os números podem ter uma precisão de até 38 dígitos. Se esse limite for excedido, uma exceção será gerada. Se precisar de uma precisão maior do que 38 dígitos, você poderá usar strings.

  • Intervalo positivo: 1E-130 a 9,9999999999999999999999999999999999999E+125

  • Intervalo negativo: -9.9999999999999999999999999999999999999E+125 a -1E-130

No DynamoDB, os números são representados como tamanho variável. Zeros iniciais e finais são cortados.

Todos os números são enviados pela rede ao DynamoDB como strings para maximizar a compatibilidade entre linguagens e bibliotecas. No entanto, o DynamoDB os trata como atributos numéricos para operações matemáticas.

É possível usar o tipo de dados Número para representar uma data ou um carimbo de data/hora. Uma maneira de fazer isso é usando o tempo epoch, o número de segundos desde 00:00:00 UTC em 1.° de janeiro de 1970. Por exemplo, o tempo epoch 1437136300 representa 12:31:40 PM UTC em 17 de julho de 2015.

Para obter mais informações, consulte http://en.wikipedia.org/wiki/Unix_time.

String

Strings são Unicode com codificação binária UTF-8. O tamanho mínimo de uma string poderá ser zero se o atributo não for usado como uma chave para um índice ou uma tabela e ser restrito pelo limite máximo de tamanho de item do DynamoDB de 400 KB.

As seguintes restrições adicionais se aplicam aos atributos de chave primária definidos como string de tipo:

  • Para uma chave primária simples, o comprimento máximo do valor do primeiro atributo (a chave de partição) é 2048 bytes.

  • Para uma chave primária composta, o comprimento máximo do valor do segundo atributo (a chave de classificação) é 1024 bytes.

O DynamoDB agrupa e compara strings usando os bytes da codificação de strings UTF-8 subjacente. Por exemplo, “a” (0x61) é maior que “A” (0x41) e “¿” (0xC2BF) é maior que “z” (0x7A).

É possível usar o tipo de dados string para representar uma data ou um carimbo de data/hora. Uma maneira de fazer isso é usando strings ISO 8601, conforme mostrado nestes exemplos:

  • 2016-02-15

  • 2015-12-21T17:42:34Z

  • 20150311T122706Z

Para obter mais informações, consulte http://en.wikipedia.org/wiki/ISO_8601.

nota

Ao contrário dos bancos de dados relacionais convencionais, o DynamoDB não comporta nativamente um tipo de dados de data e hora. Em vez disso, pode ser útil armazenar dados de data e hora como um tipo de dado numérico, usando o horário Unix epoch.

Binário

Atributos do tipo Binário podem armazenar quaisquer dados binários, como texto compactado, dados criptografados ou imagens. Sempre que o DynamoDB compara valores binários, ele trata cada byte dos dados binários como sem sinal.

O tamanho de um atributo binário poderá ser zero, se o atributo não for usado como uma chave para um índice ou uma tabela, e ser restrito pelo limite máximo de tamanho de item do DynamoDB de 400 KB.

Se você definir um atributo de chave primária como um atributo do tipo Binário, as seguintes restrições adicionais serão aplicáveis:

  • Para uma chave primária simples, o comprimento máximo do valor do primeiro atributo (a chave de partição) é 2048 bytes.

  • Para uma chave primária composta, o comprimento máximo do valor do segundo atributo (a chave de classificação) é 1024 bytes.

Suas aplicações deverão codificar valores binários no formato codificado em base64 antes que eles sejam enviados ao DynamoDB. Após o recebimento desses valores, o DynamoDB decodifica os dados em uma matriz de bytes sem sinal e a utiliza como o comprimento do atributo binário.

O exemplo a seguir é um atributo binário usando texto codificado em base64.

dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk

Booleano

Um atributo do tipo Booliano pode armazenar true ou false.

Nulo

Nulo representa um atributo com um estado desconhecido ou indefinido.

Tipos de documentos

Os tipos de documentos são lista e mapa. Esses tipos de dados podem ser aninhados entre si para representar estruturas de dados complexas com até 32 níveis de profundidade.

Não há limite para o número de valores em uma lista ou em um mapa, desde que o item que contém os valores caiba no limite de tamanho de item do DynamoDB (400 KB).

Um valor de atributo poderá ser um valor binário vazio se o atributo não for usado para uma tabela ou chave de índice. Um valor de atributo não pode ser um conjunto vazio (conjunto de strings, conjunto de números e conjunto binário). No entanto, listas e mapas vazios são permitidos. Valores binários e de string vazios são permitidos dentro de listas e mapas. Para ter mais informações, consulte Atributos.

Lista

Um atributo do tipo Lista pode armazenar uma coleção ordenada de valores. Listas são delimitadas por colchetes: [ ... ]

Uma lista é semelhante a uma matriz JSON. Não há restrições quanto aos tipos de dados que podem ser armazenados em um elemento de lista, e os elementos de um elemento de lista não precisam ser do mesmo tipo.

O exemplo a seguir mostra uma lista que contém duas strings e um número.

FavoriteThings: ["Cookies", "Coffee", 3.14159]
nota

O DynamoDB permite que você trabalhe com elementos individuais em listas, mesmo que esses elementos estejam profundamente aninhados. Para ter mais informações, consulte Usar expressões no DynamoDB.

Mapa

Um atributo do tipo Mapa pode armazenar uma coleção não ordenada de pares de nome/valor. Mapas são delimitados por chaves: { ... }

Um mapa é semelhante a um objeto JSON. Não há restrições quanto aos tipos de dados que podem ser armazenados em um elemento de mapa, e os elementos de um mapa não precisam ser do mesmo tipo.

Mapas são ideais para armazenar documentos JSON no DynamoDB. O exemplo a seguir mostra um mapa que contém uma string, um número e uma lista aninhada que contém outro mapa.

{ Day: "Monday", UnreadEmails: 42, ItemsOnMyDesk: [ "Coffee Cup", "Telephone", { Pens: { Quantity : 3}, Pencils: { Quantity : 2}, Erasers: { Quantity : 1} } ] }
nota

O DynamoDB permite que você trabalhe com elementos individuais em mapas, mesmo se esses elementos estiverem profundamente aninhados. Para ter mais informações, consulte Usar expressões no DynamoDB.

Conjuntos

O DynamoDB oferece suporte a tipos que representam conjuntos de valores de número, string ou binário. Todos os elementos de um conjunto devem ser do mesmo tipo. Por exemplo, um conjunto de números só pode conter números, um conjunto de strings pode conter apenas strings.

Não há limite para o número de valores em um conjunto, desde que o item que contém os valores não ultrapasse o limite de tamanho de item do DynamoDB (400 KB).

Cada valor dentro de um conjunto deve ser exclusivo. A ordem dos valores em um conjunto não é preservada. Portanto, seus aplicativos não devem depender de nenhuma ordem específica de elementos no conjunto. O DynamoDB não oferece suporte a conjuntos vazios. No entanto, valores binários e de string vazios são permitidos dentro de um conjunto.

O exemplo a seguir mostra um conjunto de strings, um conjunto de números e um conjunto de binários:

["Black", "Green", "Red"] [42.2, -19, 7.5, 3.14] ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]

Descritores de tipo de dados

O protocolo de API do DynamoDB de baixo nível usa descritores de tipos de dados como tokens que informam ao DynamoDB como interpretar cada atributo.

Veja a seguir uma lista completa dos descritores de tipos de dados do DynamoDB:

  • S – String

  • N – Number

  • B – Binary

  • BOOL – Boolean

  • NULL – Null

  • M – Map

  • L – List

  • SS – String Set

  • NS – Number Set

  • BS – Binary Set