Contenido del curso
Bases de Datos: De Cero a Experto

🎯 Objetivo

Crear una tabla DynamoDB, insertar datos, hacer consultas básicas y entender cómo funciona esta base NoSQL.


1. ¿Qué es DynamoDB?

  • Base de datos NoSQL totalmente gestionada por AWS.

  • Almacena datos en formato clave-valor o documentos.

  • Altamente escalable y con baja latencia.

  • No requiere administración de servidores.


2. Preparación

  • Necesitas una cuenta de AWS. Puedes usar la capa gratuita (Free Tier).

  • Instala y configura AWS CLI (opcional para consola).

  • También puedes usar AWS Management Console para todo sin código.


3. Crear tabla DynamoDB

Desde AWS Console:

  1. Ingresa a AWS Management Console.

  2. Busca y selecciona DynamoDB.

  3. Haz clic en Create table.

  4. Pon un nombre, por ejemplo: Usuarios.

  5. Define la clave primaria (Partition key), por ejemplo: UsuarioID (tipo String).

  6. Puedes agregar una clave de ordenación (Sort key) si quieres.

  7. Selecciona la configuración por defecto para capacidad (on-demand recomendado para comenzar).

  8. Crea la tabla.


4. Insertar datos (Item)

En la tabla creada:

  • Ve a la pestaña Items.

  • Haz clic en Create item.

  • Agrega datos, ejemplo:

json
{
"UsuarioID": "user123",
"Nombre": "Cristian",
"Edad": 35,
"Email": "cristian@example.com"
}
  • Guarda el ítem.


5. Consulta básica

Puedes buscar un ítem por su clave primaria:

  • En la pestaña Explore items, usa el filtro para buscar UsuarioID = user123.

  • DynamoDB te mostrará el ítem correspondiente.


6. Operaciones básicas con AWS CLI (opcional)

  • Insertar un ítem:

bash
aws dynamodb put-item --table-name Usuarios --item '{"UsuarioID": {"S": "user124"}, "Nombre": {"S": "Ana"}, "Edad": {"N": "28"}}'
  • Obtener un ítem:

bash
aws dynamodb get-item --table-name Usuarios --key '{"UsuarioID": {"S": "user124"}}'

7. Conceptos importantes

Concepto Descripción
Partition Key Clave principal para particionar datos.
Sort Key Clave para ordenar o agrupar ítems dentro de una partición.
Item Registro o fila en DynamoDB.
Tabla Contenedor de ítems.

8. Ventajas de DynamoDB

  • Escala automáticamente según demanda.

  • Muy rápida para lectura y escritura.

  • Sin necesidad de administrar servidores ni configuraciones complejas.

  • Integración nativa con otros servicios AWS.


📝 Actividad práctica

  1. Crea una tabla Productos con ProductoID como clave primaria.

  2. Inserta 3 productos con nombre, precio y categoría.

  3. Busca un producto por su ProductoID.

  4. Prueba actualizar un producto desde la consola o AWS CLI.

 

 

 

 

 

Consultas avanzadas con DynamoDB e integración con Python


1. Consultas avanzadas en DynamoDB

📌 Diferencia clave entre GetItem y Query

  • GetItem: Busca un ítem específico usando la clave primaria exacta (Partition key y Sort key si existe).

  • Query: Busca uno o más ítems que compartan la misma Partition key, con posibilidad de filtrar o usar la Sort key para rangos.


📌 Operaciones avanzadas con Query

  • Filtrar por Sort Key: Por ejemplo, buscar productos con ProductoID igual a «123» y fecha entre X e Y.

  • Uso de filtros: Filtrar resultados según atributos no clave.

  • Scan: Recorre toda la tabla (costoso, evitar si se puede).


Ejemplo: Query con filtro en consola

json
{
"TableName": "Productos",
"KeyConditionExpression": "Categoria = :cat and Precio between :min and :max",
"ExpressionAttributeValues": {
":cat": {"S": "Electrónica"},
":min": {"N": "100"},
":max": {"N": "500"}
}
}

2. Integrar DynamoDB con Python (boto3)

Paso 1: Instalar boto3

bash
pip install boto3

Paso 2: Configurar credenciales AWS

  • Configura tus credenciales con aws configure o usando variables de entorno.

  • Necesitas Access Key ID y Secret Access Key de un usuario con permisos a DynamoDB.


Paso 3: Código básico para conectar y operar

python
import boto3
from boto3.dynamodb.conditions import Key, Attr

# Crear cliente DynamoDB
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')

# Seleccionar tabla
tabla = dynamodb.Table('Productos')

# Insertar ítem
tabla.put_item(
Item={
'ProductoID': '001',
'Nombre': 'Auriculares',
'Categoria': 'Electrónica',
'Precio': 150
}
)

# Obtener ítem por clave primaria
response = tabla.get_item(
Key={'ProductoID': '001'}
)
print("GetItem:", response.get('Item'))

# Query avanzada: todos productos en categoría 'Electrónica' con precio > 100
response = tabla.query(
KeyConditionExpression=Key('Categoria').eq('Electrónica'),
FilterExpression=Attr('Precio').gt(100)
)
print("Query avanzada:", response['Items'])


Nota importante sobre el modelo de datos

Para usar query con KeyConditionExpression, el atributo usado debe ser parte de la clave primaria (Partition key o Sort key). Para filtrar por atributos que no son clave, se usa FilterExpression, pero filtrar no reduce el costo de lectura.


3. Ejercicio práctico

  1. Crea una tabla Productos con Categoria como Partition key y ProductoID como Sort key.

  2. Inserta varios productos en distintas categorías con distintos precios.

  3. Haz una consulta para obtener todos los productos de una categoría específica.

  4. Filtra productos que cuesten más de cierto valor.

  5. Actualiza un producto desde Python.

Scroll al inicio