Diseño NoSQL para DynamoDB - Amazon DynamoDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Diseño NoSQL para DynamoDB

Los sistemas de bases de datos NoSQL como Amazon DynamoDB utilizan modelos alternativos de administración de datos; por ejemplo, pares clave-valor o almacenamiento de documentos. Al pasar de un sistema de administración de bases de datos relacionales a un sistema de bases de datos NoSQL como DynamoDB, es importante entender las principales diferencias y los enfoques de diseño específicos.

Diferencias entre el diseño de datos relacionales y NoSQL

Los sistemas de bases de datos relacionales (RDBMS) y las bases de datos NoSQL tienen diferentes ventajas y desventajas:

  • En RDBMS, los datos se pueden consultar de manera flexible, pero las consultas son relativamente costosas y no escalan bien cuando hay mucho tráfico (consulte Primeros pasos para modelar datos relacionales en DynamoDB).

  • En una base de datos NoSQL como DynamoDB, existe un número limitado de métodos para consultar los datos; si se utiliza cualquier otro método diferente a estos, resultará más costoso y lento realizar las consultas.

Estas diferencias hacen que el diseño de las bases de datos sea muy distinto entre los dos sistemas:

  • En RDBMS, el diseño busca la flexibilidad sin preocuparse por los detalles o el rendimiento de la implementación. Por lo general, la optimización de consultas no afecta al diseño del esquema, pero la normalización es importante.

  • En DynamoDB, el esquema se diseña específicamente para que las consultas más habituales y más importantes resulten lo más rápidas y económicas posible. Las estructuras de datos se ajustan a los requisitos específicos de los casos de uso de la organización.

Dos conceptos clave del diseño NoSQL

El diseño NoSQL requiere un modo de pensar distinto al diseño de RDBMS. En un sistema RDBMS, puede empezar a 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. Puede organizar cada tipo de datos en su propia tabla.

Cómo es diferente el diseño NoSQL:
  • Por el contrario, no debería comenzar a diseñar su esquema para DynamoDB hasta que sepa las preguntas a las que tiene que responder. Es esencial conocer de antemano los problemas del negocio y los casos de uso de la aplicación.

  • Debe mantener el menor número de tablas posible en una aplicación de DynamoDB. Tener menos tablas hace que las cosas sean más escalables, requiere menos administración de permisos y reduce la sobrecarga de la aplicación de DynamoDB. También puede ayudar a mantener los costos de las copias de seguridad generalmente más bajos.

Aproximación al diseño NoSQL

El primer paso para diseñar la aplicación de DynamoDB es identificar los patrones de consulta específicos que el sistema debe satisfacer.

En particular, antes de empezar, es importante entender tres propiedades fundamentales de los patrones de acceso de la aplicación:

  • Tamaño de los datos: saber cuántos datos se almacenarán y solicitarán a la vez ayudará a determinar el método más eficaz para particionarlos.

  • Forma de los datos: en lugar de dar forma a los datos al procesar las consultas (como ocurre en los sistemas RDBMS), las bases de datos NoSQL organizan los datos de modo que la forma que tienen en la base de datos se corresponde con la que se va a consultar. Este es un factor crucial para aumentar la velocidad y la escalabilidad.

  • Velocidad de los datos: DynamoDB escala aumentando el número de particiones físicas disponibles para procesar las consultas y distribuyendo eficazmente los datos entre esas particiones. Conocer de antemano cuáles serán las cargas de consulta máximas puede ayudar a determinar cómo deben particionarse los datos para hacer un uso óptimo de la capacidad de E/S.

Después de identificar los requisitos de consulta específicos, puede organizar los datos con arreglo a los principios generales que rigen el rendimiento:

  • Agrupar los datos relacionales.   Cuando hace 20 años se investigaba cómo optimizar las tablas de direccionamiento, se descubrió que la "cercanía de referencias" era el factor más importante para acelerar el tiempo de respuesta y consistía en mantener los datos relacionados reunidos en el mismo lugar. Esto sigue siendo aplicable a los sistemas NoSQL actuales, donde mantener los datos relacionales cerca unos de otros tiene un impacto determinante en los costos y el rendimiento. En lugar de distribuir los elementos de datos relacionados entre diferentes tablas, en los sistemas NoSQL deben mantenerse lo más juntos posible.

    Como regla general, en una aplicación de DynamoDB, debe mantenerse el menor número de tablas posible.

    Las excepciones son aquellos casos en los que hay implicados datos de serie temporal de gran volumen o conjuntos de datos que tienen patrones de acceso muy diferentes. Normalmente, basta una sola tabla con índices invertidos para permitir que, a través de consultas simples, se creen y recuperen las estructuras de datos jerárquicas y complejas que necesita la aplicación.

  • Utilizar un orden de clasificación.   Los elementos relacionados pueden agruparse y consultarse de forma eficaz si su diseño de claves hace que se ordenen juntos. Esta es una estrategia importante en el diseño NoSQL.

  • Distribuir consultas.   También es importante que no haya una gran cantidad de consultas concentradas en la misma parte de la base de datos, donde podría sobrepasarse la capacidad de E/S. En su lugar, debe diseñar claves de datos que distribuyan el tráfico lo más uniformemente posible entre las particiones y eviten la creación de "puntos calientes".

  • Utilizar índices secundarios globales.   Si crea índices secundarios globales específicos, puede permitir el uso de diferentes consultas en la tabla principal, lo que sigue siendo rápido y relativamente económico.

Estos principios generales se traducen en unos patrones de diseño comunes que puede utilizar para modelar los datos de forma eficaz en DynamoDB.

NoSQL Workbench para DynamoDB

NoSQL Workbench para DynamoDB es una aplicación GUI de cliente multiplataforma que puede usar para el desarrollo moderno de bases de datos y operaciones. Está disponible para Windows, macOS y Linux. NoSQL Workbench es una herramienta de desarollo visual que proporciona características de modelado de datos, visualización de datos, generación de datos de muestra y desarrollo de consultas para ayudarle a diseñar, crear, consultar y administrar tablas de DynamoDB. Con NoSQL Workbench para DynamoDB, puede crear nuevos modelos de datos o diseñar modelos basados en modelos de datos existentes que satisfagan los patrones de acceso a datos de su aplicación. También puede importar y exportar el modelo de datos diseñado al final del proceso. Para más información, consulte Creación de modelos de datos con NoSQL Workbench