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
BooksconISBNcomo clave de partición yTitlecomo 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
