0%
DynamoDB simplificado: guía completa para principiantes

DynamoDB simplificado: guía completa para principiantes

Descubre Amazon DynamoDB, la base de datos NoSQL serverless de AWS, sus conceptos fundamentales, casos de uso y buenas prácticas.

I

InSkillCoach

· min

DynamoDB simplificado: guía completa para principiantes

Introducción

Amazon DynamoDB es una base de datos NoSQL totalmente gestionada y serverless que ofrece AWS. Proporciona un rendimiento constante a cualquier escala, con disponibilidad y durabilidad integradas. Esta guía te ayudará a comprender los conceptos fundamentales de DynamoDB y a empezar a utilizarlo en tus proyectos.

¿Qué es DynamoDB?

DynamoDB es una base de datos NoSQL que almacena los datos en forma de colecciones de atributos. A diferencia de las bases de datos relacionales tradicionales, DynamoDB no utiliza un esquema fijo y está diseñada para ser altamente disponible y escalable.

Características principales

  • Totalmente gestionado: AWS se encarga de la infraestructura, las actualizaciones y el mantenimiento
  • Serverless: solo pagas por lo que utilizas
  • Alta disponibilidad: replicación automática en varias zonas de disponibilidad
  • Escalabilidad: capacidad para gestionar millones de solicitudes por segundo
  • Baja latencia: tiempos de respuesta de milisegundos

Conceptos fundamentales

Tablas, ítems y atributos

  • Tabla: colección de ítems (equivalente a una tabla en una base de datos relacional)
  • Ítem: colección de atributos (equivalente a una fila)
  • Atributo: par nombre-valor (equivalente a una columna)

Claves primarias

DynamoDB utiliza dos tipos de claves primarias:

  1. Clave de partición: identificador único de un ítem
  2. Clave de ordenación: opcional, permite ordenar los ítems que comparten la misma clave de partición

Índices secundarios

  • Índice secundario global (GSI): permite acceder a los datos con una clave diferente
  • Índice secundario local (LSI): utiliza la misma clave de partición pero una clave de ordenación diferente

Casos de uso

DynamoDB es ideal para:

  • Aplicaciones con cargas de trabajo impredecibles
  • Servicios que requieren baja latencia
  • Aplicaciones móviles y web
  • Videojuegos y aplicaciones en tiempo real
  • Sistemas de recomendación
  • Catálogos de productos
  • Gestión de sesiones de usuario

Comparación con otras bases de datos

CaracterísticaDynamoDBMongoDBCassandraRDS
TipoNoSQL (clave-valor)NoSQL (documento)NoSQL (columnar)Relacional
GestiónTotalmente gestionadoAutogestionado o en la nubeAutogestionado o en la nubeTotalmente gestionado
Modelo de costesPay-as-you-goPay-as-you-go o licenciaPay-as-you-go o licenciaPay-as-you-go o licencia
EscalabilidadAutomáticaManual o automáticaManual o automáticaVertical u horizontal
ConsultasAPI sencillaLenguaje de consulta completoCQLSQL
TransaccionesACID (limitado)ACID (limitado)Eventual consistencyACID completas

Buenas prácticas

Diseño de tablas

  1. Identificar los patrones de acceso: comprender cómo se accederá a tus datos
  2. Elegir las claves primarias adecuadas: distribuir los datos de manera uniforme
  3. Utilizar los índices secundarios con criterio: equilibrar rendimiento y coste
  4. Evitar los scans: dar preferencia a las consultas por clave

Optimización de costes

  1. Utilizar el modo de capacidad aprovisionada para cargas predecibles
  2. Utilizar el modo de capacidad bajo demanda para cargas impredecibles
  3. Implementar el TTL para eliminar automáticamente los datos caducados
  4. Comprimir los datos para reducir el almacenamiento

Ejemplo práctico: creación de una tabla DynamoDB

Este es un ejemplo de creación de una tabla DynamoDB con AWS CLI:

aws dynamodb create-table \
  --table-name Users \
  --attribute-definitions \
      AttributeName=UserId,AttributeType=S \
      AttributeName=Email,AttributeType=S \
  --key-schema \
      AttributeName=UserId,KeyType=HASH \
  --global-secondary-indexes \
      "[
          {
              \"IndexName\": \"EmailIndex\",
              \"KeySchema\": [
                  {\"AttributeName\":\"Email\",\"KeyType\":\"HASH\"}
              ],
              \"Projection\": {
                  \"ProjectionType\":\"ALL\"
              },
              \"ProvisionedThroughput\": {
                  \"ReadCapacityUnits\": 5,
                  \"WriteCapacityUnits\": 5
              }
          }
      ]" \
  --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

Integración con otros servicios de AWS

DynamoDB se integra a la perfección con otros servicios de AWS:

  • AWS Lambda: procesamiento serverless de los datos
  • Amazon API Gateway: exposición de los datos mediante API REST
  • Amazon S3: almacenamiento de objetos para datos no estructurados
  • Amazon CloudWatch: monitorización del rendimiento
  • AWS Backup: copia de seguridad automática de las tablas

Conclusión

Amazon DynamoDB es una solución potente y flexible para las aplicaciones modernas que necesitan una base de datos NoSQL serverless. Su facilidad de uso, combinada con su escalabilidad y su fiabilidad, la convierte en una excelente opción para numerosos casos de uso.

Si comprendes los conceptos fundamentales y sigues las buenas prácticas, podrás sacar el máximo partido a DynamoDB en tus proyectos de AWS.

Recursos adicionales

InSkillCoach

Acerca de InSkillCoach

Experto en formación y tecnologías

Coach especializado en tecnologías avanzadas e IA, impulsado por GNeurone Inc.

Certificaciones:

  • AWS Certified Solutions Architect – Professional
  • Certificaciones de Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
502
160

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!