DynamoDB admite muchos tipos de datos diferentes para los atributos dentro de una tabla. Se pueden clasificar de la siguiente manera:
- Tipos escalares
- Tipos de documentos listas mapas
- Establecer tipos
Cuando crea una tabla o un índice secundario, debe especificar los nombres y tipos de datos de cada atributo de clave principal (clave de partición y clave de ordenación). Además, cada atributo de clave principal debe definirse como tipo string, número o binario.
DynamoDB es una base de datos NoSQL y no tiene esquemas . Esto significa que, aparte de los atributos de clave principal, no tiene que definir ningún atributo o tipo de datos cuando crea tablas. En comparación, las bases de datos relacionales requieren que defina los nombres y tipos de datos de cada columna cuando crea una tabla.
Las siguientes son descripciones de cada tipo de datos, junto con ejemplos en formato JSON.
Tipos escalares
Número:
En DynamoDB, los números se representan como longitud variable. Los ceros iniciales y finales se recortan.
Todos los números se envían a través de la red a DynamoDB como strings, para maximizar la compatibilidad entre idiomas y bibliotecas. Sin embargo, DynamoDB los trata como atributos de tipo numérico para operaciones matemáticas.
Nota: Si se requiere precisión numérica, los números se pueden pasar a DynamoDB como un tipo de string que luego se puede convertir en un tipo de número.
Cuerda:
Las strings son Unicode con codificación binaria UTF-8. La longitud mínima de una string puede ser cero, si el atributo no se usa como clave para un índice o una tabla, y está limitado por el límite de tamaño máximo de elemento de DynamoDB de 400 KB.
Las siguientes restricciones adicionales se aplican a los atributos de clave principal que se definen como string de tipo:
DynamoDB recopila y compara strings utilizando los bytes de la codificación de string UTF-8 subyacente. Por ejemplo, “a” (0x61) es mayor que “A” (0x41), y “¿” (0xC2BF) es mayor que “z” (0x7A).
Puede usar el tipo de datos de string para representar una fecha o una marca de tiempo. Una forma de hacerlo es usando strings ISO 8601, como se muestra en estos ejemplos:
- 2020-06-12
- 2020-06-12T17:42:34Z
- 2020612T174234Z
Binario:
Los atributos de tipo binario pueden almacenar cualquier dato binario, como texto comprimido, datos cifrados o imágenes. Cada vez que DynamoDB compara valores binarios, trata cada byte de los datos binarios como si no estuviera firmado.
La longitud de un atributo binario puede ser cero, si el atributo no se usa como clave para un índice o una tabla, y está limitado por el límite de tamaño máximo de elemento de DynamoDB de 400 KB.
Si define un atributo de clave principal como un atributo de tipo binario, se aplican las siguientes restricciones adicionales:
Sus aplicaciones deben codificar valores binarios en formato codificado en base64 antes de enviarlos a DynamoDB. Al recibir estos valores, DynamoDB decodifica los datos en una array de bytes sin firmar y la usa como la longitud del atributo binario.
El siguiente ejemplo es un atributo binario que utiliza texto codificado en base64.
dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk
Booleano:
verdadero falso
Nulo:
Tipos de documentos
Los tipos de documentos son lista y mapa. Estos tipos de datos se pueden anidar entre sí para representar estructuras de datos complejas de hasta 32 niveles de profundidad.
No hay límite en la cantidad de valores en una lista o un mapa, siempre que el elemento que contiene los valores se ajuste al límite de tamaño del elemento de DynamoDB (400 KB).
Un valor de atributo puede ser una string vacía o un valor binario vacío si el atributo no se usa para una tabla o clave de índice. Un valor de atributo no puede ser un conjunto vacío (conjunto de strings, conjunto de números o conjunto binario); sin embargo, se permiten listas y mapas vacíos. Se permiten strings vacías y valores binarios en listas y mapas.
Lista:
Un atributo de tipo lista puede almacenar una colección ordenada de valores. Las listas están entre corchetes: […]
Una lista es similar a una array JSON. No hay restricciones sobre los tipos de datos que se pueden almacenar en un elemento de lista y los elementos de un elemento de lista no tienen que ser del mismo tipo.
El siguiente ejemplo muestra una lista que contiene dos strings y un número.
FavoriteStuff: ["Cola", "Coffee", 3.14159]
Mapa:
Un atributo de tipo de mapa puede almacenar una colección desordenada de pares de nombre y valor. Los mapas están encerrados entre llaves: {…}
Un mapa es similar a un objeto JSON. No hay restricciones sobre los tipos de datos que se pueden almacenar en un elemento de mapa y los elementos de un mapa no tienen que ser del mismo tipo.
Los mapas son ideales para almacenar documentos JSON en DynamoDB. El siguiente ejemplo muestra un mapa que contiene una string, un número y una lista anidada que contiene otro mapa.
{ Day: "Monday", UnreadEmails: 42, ItemsOnMyDesk: [ "Coffee Cup", "Telephone", { Pens: { Quantity : 3}, Pencils: { Quantity : 2}, Erasers: { Quantity : 1} } ] }
DynamoDB admite tipos que representan conjuntos de números, strings o valores binarios. Todos los elementos dentro de un conjunto deben ser del mismo tipo. Por ejemplo, un atributo de tipo Conjunto de números solo puede contener números; Los conjuntos de strings solo pueden contener strings; y así.
No hay límite en la cantidad de valores en un conjunto, siempre que el elemento que contiene los valores se ajuste al límite de tamaño del elemento de DynamoDB (400 KB).
Cada valor dentro de un conjunto debe ser único. El orden de los valores dentro de un conjunto no se conserva. Por lo tanto, sus aplicaciones no deben basarse en ningún orden particular de elementos dentro del conjunto. DynamoDB no admite conjuntos vacíos; sin embargo, se permiten strings vacías y valores binarios dentro de un conjunto.
El siguiente ejemplo muestra un conjunto de strings, un conjunto de números y un conjunto binario:
["Black", "Green", "Red"] [42.2, -19, 7.5, 3.14] ["U3Vubnk=", "UmFpbnk=", "U25vd3k="]
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA