Introducción a Amazon DynamoDB
Amazon DynamoDB es un servicio de base de datos NoSQL completamente administrado que proporciona almacenamiento rápido y predecible con escalabilidad sin problemas. DynamoDB permite almacenar y recuperar cualquier cantidad de datos y atender cualquier nivel de tráfico de solicitudes. Es ideal para aplicaciones que requieren baja latencia y alta disponibilidad.
Características Clave de DynamoDB
- Totalmente administrado: No necesitas preocuparte por la administración de servidores, parches de software, configuración de clústeres, etc.
- Escalabilidad automática: DynamoDB ajusta automáticamente la capacidad de lectura y escritura en función de la demanda.
- Baja latencia: Ofrece latencias de un solo dígito de milisegundos.
- Alta disponibilidad: Replicación automática de datos en múltiples regiones.
- Seguridad: Integración con AWS Identity and Access Management (IAM) para control de acceso.
Conceptos Básicos de DynamoDB
Tablas, Ítems y Atributos
- Tabla: Una colección de ítems. Similar a una tabla en una base de datos relacional.
- Ítem: Un registro en una tabla. Similar a una fila en una base de datos relacional.
- Atributo: Un campo en un ítem. Similar a una columna en una base de datos relacional.
Claves Primarias
- Clave de partición: Un atributo único que determina la partición en la que se almacenará el ítem.
- Clave de partición y de clasificación: Una combinación de dos atributos. La clave de partición determina la partición y la clave de clasificación determina el orden dentro de la partición.
Índices Secundarios
- Índice Secundario Global (GSI): Permite consultas eficientes usando atributos diferentes a los de la clave primaria.
- Índice Secundario Local (LSI): Permite consultas eficientes dentro de una partición usando atributos diferentes a los de la clave de clasificación.
Ejemplo Práctico
Crear una Tabla en DynamoDB
Vamos a crear una tabla llamada Movies
para almacenar información sobre películas.
import boto3 # Crear un cliente de DynamoDB dynamodb = boto3.client('dynamodb', region_name='us-west-2') # Crear la tabla table = dynamodb.create_table( TableName='Movies', KeySchema=[ { 'AttributeName': 'year', 'KeyType': 'HASH' # Clave de partición }, { 'AttributeName': 'title', 'KeyType': 'RANGE' # Clave de clasificación } ], AttributeDefinitions=[ { 'AttributeName': 'year', 'AttributeType': 'N' }, { 'AttributeName': 'title', 'AttributeType': 'S' } ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5 } ) print("Tabla creada con éxito!")
Insertar Datos en la Tabla
# Insertar un ítem en la tabla table.put_item( Item={ 'year': 2021, 'title': 'The Example Movie', 'info': { 'plot': 'An example plot', 'rating': 8.5 } } ) print("Ítem insertado con éxito!")
Consultar Datos en la Tabla
# Consultar un ítem por clave primaria response = table.get_item( Key={ 'year': 2021, 'title': 'The Example Movie' } ) item = response['Item'] print(item)
Ejercicio Práctico
Ejercicio 1: Crear y Consultar una Tabla
- Crear una tabla: Crea una tabla llamada
Books
conISBN
como clave de partición yTitle
como clave de clasificación. - Insertar datos: Inserta al menos tres ítems en la tabla
Books
. - Consultar datos: Consulta un ítem específico usando la clave primaria.
Solución
import boto3 # Crear un cliente de DynamoDB dynamodb = boto3.client('dynamodb', region_name='us-west-2') # Crear la tabla table = dynamodb.create_table( TableName='Books', KeySchema=[ { 'AttributeName': 'ISBN', 'KeyType': 'HASH' # Clave de partición }, { 'AttributeName': 'Title', 'KeyType': 'RANGE' # Clave de clasificación } ], AttributeDefinitions=[ { 'AttributeName': 'ISBN', 'AttributeType': 'S' }, { 'AttributeName': 'Title', 'AttributeType': 'S' } ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5 } ) print("Tabla 'Books' creada con éxito!") # Insertar ítems en la tabla table.put_item( Item={ 'ISBN': '978-3-16-148410-0', 'Title': 'Book One', 'Author': 'Author A', 'Year': 2021 } ) table.put_item( Item={ 'ISBN': '978-1-23-456789-7', 'Title': 'Book Two', 'Author': 'Author B', 'Year': 2020 } ) table.put_item( Item={ 'ISBN': '978-0-12-345678-9', 'Title': 'Book Three', 'Author': 'Author C', 'Year': 2019 } ) print("Ítems insertados con éxito!") # Consultar un ítem por clave primaria response = table.get_item( Key={ 'ISBN': '978-3-16-148410-0', 'Title': 'Book One' } ) item = response['Item'] print(item)
Conclusión
En esta sección, hemos aprendido los conceptos básicos de Amazon DynamoDB, cómo crear una tabla, insertar datos y realizar consultas. DynamoDB es una herramienta poderosa para manejar grandes volúmenes de datos con baja latencia y alta disponibilidad. En el próximo módulo, exploraremos otros servicios de bases de datos en AWS, como Amazon Aurora y Amazon Redshift.
Curso de AWS
Módulo 1: Introducción a AWS
- ¿Qué es AWS?
- Configuración de tu cuenta de AWS
- Infraestructura global de AWS
- Consola de administración de AWS