Día 24: Anatomía de DynamoDB: Tablas, Items y Atributos
📋 Día 24: ¿Cómo se organizan los datos en DynamoDB?
Ayer creamos nuestra primera tabla, pero hoy vamos a entender qué hay dentro. Si vienes del mundo SQL (MySQL, PostgreSQL), prepárate para desaprender un poco. En DynamoDB no hablamos de filas y columnas, sino de una jerarquía mucho más flexible y potente.
🧬 La jerarquía de datos
- Tablas (Tables): Es el contenedor principal (similar a una tabla SQL).
- Elementos (Items): Es un registro individual dentro de la tabla (similar a una “fila”).
- Atributos (Attributes): Son los datos específicos de cada elemento (similar a las “columnas”).
¿Por qué decimos que es “Schema-less”?
En una base de datos tradicional, si una tabla tiene las columnas Nombre y Email, todas las filas DEBEN tener esas columnas. En DynamoDB, un Item puede tener Nombre y Email, pero el siguiente Item puede tener Nombre y Twitter, ¡y no pasa nada! La tabla no explota.
🛠️ El Código (CloudFormation)
Vamos a crear una tabla de “Productos” que nos permita ver cómo se definen los tipos de datos básicos.
1. Tabla de Catálogo de Productos
TablaProductos:
Type: AWS::DynamoDB::Table
Properties:
TableName: "CatalogoProductos"
# Definimos solo la llave principal (obligatorio)
AttributeDefinitions:
- AttributeName: "SKU"
AttributeType: "S" # S = String (Texto)
KeySchema:
- AttributeName: "SKU"
KeyType: "HASH"
BillingMode: PAY_PER_REQUEST
📚 Conceptos Nuevos Explicados
1. Atributos Escalares (Tipos Básicos)
- S (String): Texto.
- N (Number): Números (enteros, decimales).
- B (Binary): Datos binarios (como imágenes en miniatura).
2. Atributos de Documento (Tipos Complejos)
Aquí es donde DynamoDB brilla. Puedes guardar:
- L (List): Una lista ordenada de valores (como una lista de tags:
['electronica', 'oferta']). - M (Map): Un objeto JSON anidado dentro de un atributo. ¡Puedes tener mini-estructuras dentro de un Item!
3. El tamaño del Item
Ojo: Un solo Item (con todos sus atributos) no puede pesar más de 400 KB. DynamoDB está hecho para datos rápidos y ligeros, no para guardar archivos pesados (para eso usamos S3).
🚀 Cómo Desplegarlo
Actualiza tu infraestructura para añadir la tabla de productos:
aws cloudformation deploy \
--stack-name Dynamo-Conceptos-D24 \
--template-file 02-dynamo-tables-items-attributes.yaml
📈 Cómo probar la flexibilidad
- Ve a la consola de DynamoDB → Explore items → Tabla
CatalogoProductos. - Crea un Item:
SKU: PROD-001,Nombre: Camiseta. - Crea otro Item:
SKU: PROD-002,Nombre: Laptop, y añade un nuevo atributo tipo Number llamadoPrecio: 1200. - Observa cómo la tabla muestra ambos, aunque uno tenga precio y el otro no. ¡Eso es flexibilidad NoSQL!
📂 Código Adjunto
Puedes bajar el template de la tabla de productos aquí: Ver archivo en GitHub
🎥 Video Tutorial
Mira el proceso paso a paso en video:
💡 Próximos pasos
- Día 25: La importancia de la Partition Key y Sort Key: Mañana veremos el concepto más importante de DynamoDB. Si entiendes las llaves, dominas la base de datos.