DynamoDB: Qué es, Principales Usos y un Ejemplo Práctico

DynamoDB: Qué es, Principales Usos y un Ejemplo Práctico

¿Qué es DynamoDB?

Global Tables in DynamoDB - All You Need to Know

DynamoDB es una base de datos NoSQL completamente gestionada ofrecida por Amazon Web Services (AWS). Diseñada para manejar aplicaciones de alto rendimiento, es ideal para escenarios donde se requieren consultas rápidas y escalabilidad automática.

A diferencia de las bases de datos relacionales, DynamoDB utiliza un modelo de datos flexible basado en tablas con atributos clave y sin esquema fijo, lo que lo hace perfecto para aplicaciones modernas con necesidades cambiantes.

Principales Usos de DynamoDB

DynamoDB se utiliza ampliamente en diversas aplicaciones y sectores. Algunos de sus casos de uso más destacados incluyen:

  1. Aplicaciones Web y Móviles: Para almacenar información de usuarios, sesiones y preferencias en tiempo real.
  2. Gaming: Seguimiento de puntuaciones, estadísticas de jugadores y tablas de clasificación.
  3. E-commerce: Gestión de inventarios, catálogos de productos y datos de transacciones.
  4. IoT (Internet de las Cosas): Almacenamiento y análisis de datos de dispositivos conectados.
  5. Análisis en Tiempo Real: Procesamiento de datos para dashboards y reportes instantáneos.

Ventajas de DynamoDB

  • Escalabilidad Automática: Ajusta la capacidad de lectura/escritura según la carga.
  • Baja Latencia: Garantiza tiempos de respuesta rápidos para consultas, incluso bajo alta demanda.
  • Modelo de Pago por Uso: Permite ahorrar costos al pagar solo por las operaciones realizadas.
  • Alta Disponibilidad: Diseñado para garantizar disponibilidad y durabilidad de los datos.
  • Integración Nativa con AWS: Compatible con servicios como Lambda, API Gateway y CloudWatch.

Ejemplo Práctico: Gestión de Inventario para un E-commerce

Descripción del Proyecto

Crearemos una aplicación sencilla que permite:

  • Registrar nuevos productos en el inventario.
  • Consultar la lista de productos disponibles.
  • Actualizar la cantidad de productos en existencia.

Utilizaremos AWS Lambda para la lógica del backend y DynamoDB como base de datos para almacenar la información del inventario.

Configuración del Proyecto

1. Crear una Tabla en DynamoDB

En la consola de AWS:

  1. Ve a DynamoDB y selecciona «Crear tabla».
  2. Configura:
    • Nombre de la tabla: InventoryTable.
    • Clave primaria: productId (tipo String).
  3. Guarda la configuración.

2. Configuración del Backend con AWS Lambda

Archivo addProduct.js: Crear un Producto
				
					const AWS = require('aws-sdk');
const dynamoDb = new AWS.DynamoDB.DocumentClient();

module.exports.handler = async (event) => {
  const data = JSON.parse(event.body);
  const params = {
    TableName: 'InventoryTable',
    Item: {
      productId: data.productId,
      name: data.name,
      quantity: data.quantity,
      price: data.price,
    },
  };

  try {
    await dynamoDb.put(params).promise();
    return {
      statusCode: 201,
      body: JSON.stringify({ message: 'Producto añadido al inventario', product: params.Item }),
    };
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify({ error: 'Error al añadir producto' }),
    };
  }
};

				
			
Archivo getProducts.js: Consultar Productos
				
					module.exports.handler = async () => {
  const params = {
    TableName: 'InventoryTable',
  };

  try {
    const result = await dynamoDb.scan(params).promise();
    return {
      statusCode: 200,
      body: JSON.stringify(result.Items),
    };
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify({ error: 'Error al obtener productos' }),
    };
  }
};
				
			
Archivo updateProduct.js: Actualizar Cantidad de Productos
				
					module.exports.handler = async (event) => {
  const data = JSON.parse(event.body);
  const params = {
    TableName: 'InventoryTable',
    Key: { productId: event.pathParameters.id },
    UpdateExpression: 'set quantity = :quantity',
    ExpressionAttributeValues: {
      ':quantity': data.quantity,
    },
    ReturnValues: 'UPDATED_NEW',
  };

  try {
    const result = await dynamoDb.update(params).promise();
    return {
      statusCode: 200,
      body: JSON.stringify({ message: 'Cantidad actualizada', result }),
    };
  } catch (error) {
    return {
      statusCode: 500,
      body: JSON.stringify({ error: 'Error al actualizar cantidad' }),
    };
  }
};

				
			

3. Desplegar con Serverless Framework

Archivo serverless.yml: Configuración del Proyecto
				
					service: inventory-api  

provider:  
  name: aws  
  runtime: nodejs18.x  

functions:  
  addProduct:  
    handler: addProduct.handler  
    events:  
      - http:  
          path: products  
          method: post  

  getProducts:  
    handler: getProducts.handler  
    events:  
      - http:  
          path: products  
          method: get  

  updateProduct:  
    handler: updateProduct.handler  
    events:  
      - http:  
          path: products/{id}  
          method: put  

				
			

Ejecutar:

				
					serverless deploy
				
			

Conclusión

DynamoDB es una solución poderosa para aplicaciones modernas que necesitan escalabilidad, rendimiento y flexibilidad. Su integración con AWS Lambda facilita la creación de sistemas eficientes y sin servidores, como en nuestro ejemplo de gestión de inventario.

Adoptar DynamoDB en proyectos reales permite a los desarrolladores manejar datos de forma eficiente y centrarse en la lógica de negocio, aprovechando al máximo las ventajas de la nube.

Referencias:

Facebook
X
LinkedIn
Reddit
Pinterest
Threads

Post relacionados

Post recientes

Search