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

  1. Crear una tabla: Crea una tabla llamada Books con ISBN como clave de partición y Title como clave de clasificación.
  2. Insertar datos: Inserta al menos tres ítems en la tabla Books.
  3. 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.

© Copyright 2024. Todos los derechos reservados