Introducción a DynamoDB en AWS para Principiantes

  • Tiempo de lectura:12 minutos de lectura
  • Autor de la entrada:
  • Última modificación de la entrada:14/07/2024

¿Quieres aprender qué es DynamoDB y cómo usar este servicio de AWS? Si quieres explotar esta tecnología al máximo no te pierdas esta entrada, en la que analizaremos sus conceptos más importantes.

DynamoDB

¿Qué es DynamoDB?

DynamoDB es una base de datos NoSQL (Not only SQL) de tipo clave-valor disponible como servicio en AWS.

Está optimizada para tener un buen rendimiento y escalabillidad horizontal añadiendo más nodos al clúster. Si el tamaño de tus datos crece, no se va a penalizar en el rendimiento de la base de datos de una manera muy significativa.

Además, tiene alta disponibilidad (99.999% de uptime SLA, esto es menos de 5 minutos al año de caídas) y durabilidad de los datos. Para ello, almacena varias copias de los datos en diferentes nodos. Si uno de estos nodos falla, otro puede tomar su lugar como nodo primario.

Tradicionalmente, cuando teníamos una base de datos debíamos gestionar todo su hardware, seguridad, actualizaciones y tener en cuenta su mantenimiento. Con DynamoDB todo esto no es necesario apuesto que es un servicio gestionado, y aunque hay servidores y sistemas de almacenamiento por detrás, es totalmente transparente y no debes preocuparte.

DynamoDB distribuye tus datos en particiones, que pueden ser distintas máquinas, tanto físicas como virtuales para aumentar la redundancia.

AWS Amazon Web Services Logo

Tiene un coste muy razonable y el modelo de pago está basado en el uso, por lo que no es un coste fijo. Por un lado, se paga por el almacenamiento usado, y por otro lado se paga por la demanda (en función de las consultas) o bien por el aprovisionamiento de recursos para una determinada capacidad (Read Capacity Units o Write Capacity Units).

Por último, se integra muy bien con otros servicios de AWS. Esta es una de las fortalezas de esta base de datos más importantes. Por ejemplo, se integra muy bien con s3 para exportar tablas, también podemos enviar datos fácilmente a Kinesis para llevar a cabo algún procesamiento en streaming como consultas temporales en tiempo real.

Conceptos Básicos

En DynamoDB las tablas son las colecciones de elementos, y los elementos son colecciones de atributos o pares clave-valor. La clave primaria de una tabla está compuesta de una clave de partición y de una clave de clasificación (sort key).

También, se puede usar un índice secundario global o GSI, que permite realizar consultas filtrando por columnas que no sean la clave de partición o de clasificación.

Casos de Uso

DynamoDB es ideal para aplicaciones que tienen patrones de acceso bien conocidos. Antes de usar este servicio es recomendable conocer cómo vas a acceder a los datos para diseñar una estructura de tablas correcta desde el primer momento.

Al trabajar con las APIs de DynamoDB, al ser una base de datos clave-valor, se proporcionará generalmente la clave para obtener el valor asociado almacenado. Es común usar ORMs (Object Relational Mapper) que por detrás implementan las APIs, dependiendo del lenguaje que se quiera usar. Para Java tenemos DynamoDBMapper y para Python Boto3.

En cuanto a la autorización, se basa en el uso del servicio IAM, por lo que no será necesario pasar credenciales como usuario y contraseña sino un usuario con los permisos suficientes.

También, puedes configurar DynamoDB Streams, lo que te permite capturar los cambios en los registros de las tablas en tiempo real y ejecutar una función lambda. Esta funcionalidad es muy interesante para construir dashboards o sistemas de alerta.

No deberías usar DynamoDB cuando necesitas cruzar tablas, hacer uniones complejas o implementar transacciones con varios registros. Tampoco es la base de datos adecuada cuando necesitas analizar en tiempo real históricos de datos, para lo que existen mejores opciones analíticas como Data Warehouses.

Cómo empezar con DynamoDB

Para desplegar una tabla de DynamoDB fácilmente, sigue estos pasos:

  1. Abre la consola de AWS en https://aws.amazon.com/ y accede a tu cuenta.
  2. Selecciona la región en la que deseas desplegar la tabla de DynamoDB.
  3. En la consola de AWS, busca y selecciona DynamoDB en la sección de servicios.
  4. Haz clic en el botón Create table en la página de DynamoDB.
  5. En la ventana emergente, especifica el nombre de la tabla y el nombre de la clave primaria. Por ejemplo, mytable y id respectivamente.
  6. Haz clic en el botón Create para crear la tabla de DynamoDB.
  7. La tabla de DynamoDB se ha desplegado correctamente y ya está disponible para usarse.

A continuación muestro un ejemplo de código en Python que muestra cómo utilizar DynamoDB para almacenar y recuperar datos de una tabla en la nube:

# Importa la librería Boto3
import boto3

# Crea una conexión al servicio de DynamoDB
dynamodb = boto3.resource('dynamodb')

# Abre la tabla
table = dynamodb.Table('mytable')

# Inserta un nuevo elemento
table.put_item(
   Item={
        'id': '123',
        'name': 'Oscar',
        'age': 28
    }
)

# Recupera un elemento de la tabla
response = table.get_item(
    Key={
        'id': '123'
    }
)

# Imprime el resultado
print(response['Item'])

En este ejemplo se importa la biblioteca Boto3 para Python y se crea una conexión al servicio DynamoDB. Luego se abre la tabla de DynamoDB y se inserta un nuevo elemento en la tabla. Se utiliza el método get_item de DynamoDB para recuperar el elemento de la tabla y se imprime el elemento recuperado.

¿Debes aprender Amazon DynamoDB como Ingeniero de Datos?

Es importante que los ingenieros de datos se interesen por el servicio de DynamoDB en AWS.

Como puedes imaginar, es muy fácil de configurar desde la consola de AWS. Si alguna vez has hecho algo en lo que hayas configurado una base de datos SQL, desde Oracle hasta las bases de datos relacionales como MySQL o PostgreSQL sabrás que las tareas de configuración y mantenimiento son bastante tediosas.

Además de poderse configurar desde la CLI, hay muchas maneras y lenguajes de programación para interactuar con DynamoDB como Python, .NET, Java o PHP.

Mejores cursos de DynamoDB y Siguientes Pasos

A continuación tienes el que es en mi opinión el mejor curso de DynamoDB que puedes encontrar. Este curso te enseñará a usar desde cero este servicio de base de datos de AWS para poder implementar aplicaciones y tus proyectos de una manera profesional. Te aportará mucho valor por muy poco precio.

curso aws dynamodb coursera

Amazon DynamoDB: Creando aplicaciones NoSQL

Curso ofrecido por AWS en Coursera con más de 10 horas de contenido sobre DynamoDB. A través de demos y de ejemplos prácticos aprenderás a desplegar y usar DynamoDB desde cero. También aprenderás buenas prácticas para integrar el servicio con aplicaciones web y móviles, prestando atención a la seguridad y autenticación.

Incluye conceptos de recuperación, SDKs, claves de partición, seguridad y cifrado, tablas globales, aplicaciones stateless, streams y mejores prácticas.

Preguntas Frecuentes DynamoDB – FAQ

¿Para qué se usa DynamoDB?

DynamoDB es una base de datos NoSQL en AWS que permite implementar fácilmente el almacenamiento de aplicaciones con patrones de acceso conocidos. Es un servicio totalmente gestionado, por lo que ahorrará mucho trabajo de mantenimiento y administración al equipo.

¿Qué ventajas tiene DynamoDB?

Esta base de datos en AWS tiene múltiples ventajas como alta disponibilidad y muy buen rendimiento en consultas con patrones de acceso conocidos. Además, puede escalar horizontalmente de forma transparente para poder responder a consultas en un tiempo razonable sin importar el volumen de los datos. Otra ventaja, es su integración con otros servicios de AWS como s3, Redshift o Kinesis.

¿Cuáles son las alternativas a DynamoDB?

Las alternativas más populares en AWS son RDS o Aurora. Además, también compite con MongoDB como base de datos NoSQL.

¿Qué tipo de base de datos es DynamoDB?

Amazon DynamoDB es una base de datos NoSQL (Not only SQL) de tipo clave-valor disponible como servicio totalmente gestionado en la nube de AWS (Amazon Web Services).

Esta entrada tiene un comentario

Deja una respuesta