Primeros pasos para modelar datos relacionales en DynamoDB
nota
El diseño NoSQL requiere un modo de pensar distinto al diseño de RDBMS. En un sistema RDBMS, puede crear un modelo de datos normalizados sin pensar en los patrones de acceso. Posteriormente, podrá ampliar este modelo cuando surjan nuevos requisitos sobre preguntas y consultas. Por el contrario, en Amazon DynamoDB, no debe empezar a diseñar su esquema hasta que no sepa las preguntas que debe responder. Es absolutamente esencial conocer los problemas del negocio y los costos iniciales de los casos de uso de la aplicación.
Si desea comenzar a diseñar una tabla de DynamoDB que escale efectivamente, debe realizar primero varios pasos para identificar los patrones de acceso requeridos por los sistemas de ayuda de operaciones y de la actividad (OSS/BSS) que deben admitirse:
En el caso de las nuevas aplicaciones, revise los casos de usuario para determinar las actividades y los objetivos. Documente los diferentes casos de uso que ha identificado y analice los patrones de acceso que requieren.
En las aplicaciones existentes, analice los registros de consultas para saber cuántas personas utilizan actualmente el sistema y cuáles son los patrones de acceso de claves.
Tras completar este proceso, debería tener una lista similar a la siguiente:
| Patrón número | Descripción de patrón de acceso |
|---|---|
| 1 | Buscar detalles de empleado por ID de empleado |
| 2 | Consultar detalles de empleado por nombre de empleado |
| 3 | Encontrar los números de teléfono de un empleado |
| 4 | Encontrar los números de teléfono de un cliente |
| 5 | Obtener los pedidos de los clientes dentro del rango de fechas |
| 6 | Mostrar todos los pedidos abiertos dentro del rango de fechas |
| 7 | Ver todos los empleados contratados recientemente |
| 8 | Encontrar a todos los empleados en un almacén |
| 9 | Obtener todos los artículos del pedido por producto |
| 10 | Obtener inventarios de productos en todos los almacenes |
| 11 | Obtener clientes por representante de cuenta |
| 12 | Obtener pedidos por representante de cuenta |
| 13 | Obtener empleados con título de trabajo |
| 14 | Obtener inventario por producto y almacén |
| 15 | Obtener inventario de productos total |
En una aplicación real, la lista podría ser mucho más larga. Sin embargo, esta colección representa el rango de complejidad de los patrones de consulta que podría encontrar en un entorno de producción.
Un enfoque moderno del diseño de esquemas de DynamoDB utiliza principios orientados a los agregados, que agrupan los datos en función de los patrones de acceso en lugar de los límites rígidos de las entidades. Este enfoque tiene en cuenta varios patrones de diseño:
Diseño de tabla única: uso de claves de clasificación compuestas, índices secundarios globales sobrecargados y patrones de listas de adyacencia para almacenar varios tipos de entidades en una tabla.
Diseño de varias tablas: uso de tablas independientes para las entidades con características operativas independientes y una baja correlación de acceso, con GSI estratégicos para las consultas entre entidades.
Diseño agregado: incrustación relacionada con datos cuando siempre se accede a ellos de forma conjunta (Pedido + OrderItems) o usar recopilaciones de artículos para identificar relaciones (Producto + Inventario).
La elección entre estos enfoques depende de los patrones de acceso específicos, las características de los datos y los requisitos operativos. Puede utilizar estos elementos para estructurar los datos de forma que una aplicación pueda recuperar todo aquello que necesite para un determinado patrón de acceso realizando una sola consulta en una tabla o índice.
nota
La elección entre el diseño de una sola tabla y de varias tablas depende de sus requisitos específicos. El diseño de una sola tabla funciona bien cuando las entidades tienen una alta correlación de acceso y características operativas similares. Se prefiere el diseño de varias tablas cuando las entidades tienen requisitos operativos independientes, patrones de acceso diferentes o cuando se necesitan límites operativos claros. El ejemplo de esta guía muestra un enfoque de varias tablas con agregación y desnormalización estratégicas.
Para utilizar NoSQL Workbench para DynamoDB como ayuda para visualizar su diseño de clave de partición, consulte Creación de modelos de datos con NoSQL Workbench.