Una base de datos de clave-valor es un tipo de base de datos no relacional, también conocida como base de datos NoSQL, que utiliza un método simple de clave-valor para almacenar datos. Almacena datos como un conjunto de pares clave-valor en los que una clave sirve como un identificador único. Tanto las claves como los valores pueden ser cualquier cosa, desde objetos simples hasta objetos compuestos complejos. Las bases de datos de clave-valor (o almacenes clave-valor) son altamente divisibles y permiten escalado horizontal a niveles que otros tipos de bases de datos no pueden alcanzar.

¿Cuáles son las ventajas de las bases de datos de clave-valor?

Las bases de datos relacionales tradicionales (bases de datos SQL) almacenan datos en forma de tablas que contienen filas y columnas. Imponen una estructura rígida en los datos y no son óptimas para todos los casos de uso. Por otro lado, las bases de datos de clave-valor son bases de datos NoSQL. Permiten esquemas de bases de datos flexibles y un rendimiento mejorado a escala para ciertos casos de uso. Las ventajas de las tiendas de clave-valor incluyen:

Escalabilidad

Como todas las consultas de los usuarios requieren la interacción de datos, las bases de datos a menudo pueden convertirse en un obstáculo para el rendimiento de las aplicaciones. Varias estrategias para resolver el problema, como la replicación y la partición, añaden complejidad al código de la aplicación. Muchas bases de datos de clave-valor ofrecen soporte integrado para funciones de escalado avanzadas. Se escalan horizontalmente y distribuyen automáticamente los datos entre los servidores para reducir los obstáculos en un solo servidor.

Facilidad de uso

Las bases de datos de clave-valor siguen el paradigma orientado a objetos que permite a los desarrolladores mapear objetos del mundo real directamente a objetos de software. Varios lenguajes de programación, como Java, también siguen el mismo paradigma. En lugar de mapear sus objetos de código a varias tablas subyacentes, los ingenieros pueden crear pares clave-valor que coincidan con sus objetos de código. Esto hace que el uso de las tiendas de clave-valor sea más intuitivo para los desarrolladores.

Rendimiento

Las bases de datos de clave-valor procesan operaciones de lectura-escritura constantes con llamadas al servidor de bajo costo. La latencia mejorada y el tiempo de respuesta reducido ofrecen un mejor rendimiento a escala. Se basan en estructuras simples de una sola tabla, en lugar de en múltiples tablas interrelacionadas. A diferencia de las bases de datos relacionales, las bases de datos de clave-valor no tienen que realizar uniones de tablas que consumen muchos recursos, lo que las hace mucho más rápidas.

¿Cuáles son los casos de uso de las bases de datos de clave-valor?

Puede utilizar sistemas de bases de datos de clave-valor como base de datos principal para su aplicación o para gestionar requisitos específicos. A continuación, ofrecemos algunos ejemplos de casos de uso de bases de datos de clave-valor.

Administración de sesiones

Una aplicación orientada a la sesión, como una aplicación web, inicia una sesión cuando un usuario inicia sesión en una aplicación y está activo hasta que el usuario cierra la sesión o esta expira. Durante este período, la aplicación almacena todos los atributos de la sesión del usuario en la memoria principal o en una base de datos. Los datos de la sesión del usuario pueden incluir información del perfil, mensajes, datos personalizados y temas, recomendaciones, promociones dirigidas y descuentos.

Cada sesión de usuario tiene un identificador único. Solo la clave principal consulta los datos de la sesión nunca, por lo que un almacén clave-valor rápido se adapta mejor a los datos de la sesión. En general, las bases de datos clave-valor pueden proporcionar una sobrecarga más pequeña por página que las bases de datos relacionales.

Carro de compras

Durante la temporada de compras navideñas, un sitio web de e-commerce puede recibir miles de millones de pedidos en segundos. Las bases de datos de clave-valor pueden manejar el escalado de grandes cantidades de datos y volúmenes extremadamente altos de cambios de estado, mientras se atiende a millones de usuarios simultáneamente a través del procesamiento y el almacenamiento distribuidos. Los almacenes de clave-valor también tienen redundancia incorporada, lo cual puede manejar la pérdida de nodos de almacenamiento.

Motor de almacenamiento de metadatos

Su almacén de clave-valor puede actuar como una capa de almacenamiento subyacente para niveles más altos de acceso a los datos. Por ejemplo, puede escalar el rendimiento y la simultaneidad de las cargas de trabajo multimedia y de entretenimiento, como el streaming de video en tiempo real y el contenido interactivo. También puede crear su plataforma de juegos con datos del jugador, historial de la sesión y tablas de clasificación para millones de usuarios simultáneos.

Almacenamiento en caché

Puede usar una base de datos de clave-valor para almacenar datos temporalmente y recuperarlos más rápidamente. Por ejemplo, las aplicaciones de redes sociales pueden almacenar datos a los que se accede con frecuencia, como el contenido de las fuentes de noticias. Los sistemas de almacenamiento en caché de datos en memoria también utilizan almacenes de clave-valor para acelerar las respuestas de las aplicaciones.

Cómo funcionan las bases de datos de clave-valor

Las bases de datos de clave-valor funcionan organizando todos los datos como un conjunto de pares de clave-valor. Puede pensar en la clave como una pregunta y, en el valor, como la respuesta a la pregunta. En el siguiente ejemplo, la clave principal es una combinación de dos claves, ID de producto y Tipo. La ID del producto es la clave de partición que describe la partición en la que se almacenará el artículo. El Tipo es la clave de ordenación, que determina el orden en el que se almacenarán los elementos en el disco. La combinación de la clave de partición y la clave de ordenación forma una clave principal única, que se asigna a un único valor de la base de datos.

En este ejemplo, el libro de objetos de datos tiene atributos como el título, el autor y la fecha de publicación. Cada objeto de datos de libros tiene una clave llamada BookID. Puede vincular directamente el BookID y el objeto de libro asociado en el almacén de clave-valor. Además, puede recuperar datos buscando el BookID en la tabla. Además, cada elemento tiene su propio esquema, lo que hace que los almacenes de clave-valor sean muy flexibles para almacenar datos de diferentes estructuras.

El diagrama muestra un ejemplo de datos almacenados como pares clave-valor en DynamoDB

¿Cuáles son las características de las bases de datos de clave-valor?

Según la solución que elija, su almacén de clave-valor puede proporcionar varias funciones adicionales, como se indica a continuación.

Soporte para tipos de datos complejos

Los almacenes de clave-valor admiten tipos de datos definidos, como números enteros y texto. Sin embargo, muchos de ellos también admiten objetos más complejos, como matrices, diccionarios anidados, imágenes, videos y datos semiestructurados. Al proporcionarle a la base de datos más información sobre sus datos, hay espacio para una mayor optimización del rendimiento de las consultas y el almacenamiento.

No es necesario unir tablas

Las bases de datos de clave-valor no necesitan realizar ninguna unión de tablas que consuma muchos recursos. Su flexibilidad permite almacenar toda la información necesaria en una sola tabla. Esta es una de las razones por las que las tiendas de clave-valor funcionan tan bien.

Claves clasificadas

Un almacén de clave-valor puede ordenar las claves para que los datos se almacenen de forma sistemática y para implementar la partición. Por ejemplo, las claves se pueden clasificar:

  • Alfabéticamente o numéricamente
  • Cronológicamente
  • Según el tamaño de los datos

Considere una tienda de clave-valor que utilice la dirección de correo electrónico del cliente como clave única. Las direcciones de correo electrónico se pueden clasificar alfabéticamente, por lo que todos los datos de las listas de correo electrónico A-J se almacenan en el servidor 1, K-S en el servidor 2, etc.

Soporte de clave secundaria

Algunos almacenes de clave-valor permiten definir dos o más claves o índices secundarios diferentes para acceder a los mismos datos. Por ejemplo, puede almacenar los datos de los clientes por dirección de correo electrónico clave y número de teléfono clave.

Replicación

Muchos almacenes de clave-valor ofrecen soporte de replicación integrado al copiar automáticamente los datos en varios nodos de almacenamiento. Esto ayuda a la recuperación automática en caso de desastres; aún conservará sus datos en caso de que falle el servidor.

Particionado

El particionado es la forma de distribuir los datos entre los nodos. Muchas bases de datos de clave-valor ofrecen opciones de particionado predeterminadas. Algunas también ofrecen la opción de definir los parámetros de entrada para las particiones. Por ejemplo, puede particionar las claves numéricas en grupos de 1000. Las bases de datos de clave-valor avanzadas también proporcionan soporte automático para distribuir su base de datos de clave-valor en varias ubicaciones geográficas. Esto mejora la disponibilidad y la fiabilidad de las aplicaciones porque puede responder a las consultas cerca de la ubicación del usuario.

Soporte para ACID

La Atomicity, Consistency, Isolation, and Durability (ACID, atomicidad, consistencia, aislamiento y durabilidad) son propiedades de la base de datos que garantizan la precisión y fiabilidad de los datos en todas las circunstancias. Por ejemplo, si realiza varios cambios en los datos en una secuencia, la atomicidad requiere que todos los cambios se realicen en orden. Si un cambio falla, todo falla.

Las bases de datos de clave-valor avanzadas proporcionan soporte nativo del lado del servidor para ACID. Esto simplifica la experiencia de los desarrolladores a la hora de realizar cambios coordinados de “todo o nada” en varios elementos y en distintas tablas. Gracias al soporte de las transacciones, los desarrolladores pueden incorporar la escalabilidad, el rendimiento y los beneficios empresariales a un conjunto mayor de cargas de trabajo críticas.

¿Cuáles son las limitaciones de las bases de datos de clave-valor?

Las bases de datos de clave-valor requieren algunas compensaciones, como ocurre con cualquier tipo de elección tecnológica.

Ausencia de consultas complejas

Como las bases de datos de clave-valor no admiten consultas complejas, los desarrolladores deben solucionar este problema en el código. Las operaciones de datos se realizan principalmente mediante términos de lenguaje de consulta simples como “get”, “put” y “delete”. Existen limitaciones en cuanto a la cantidad de datos que se pueden filtrar y clasificar antes de acceder a ellos.

Mala administración del esquema

El diseño de la tienda de clave-valor no impone un esquema a los desarrolladores. Cualquier persona puede modificar el esquema en el programa de base de datos. Los equipos de desarrollo deben planificar el modelo de datos de forma sistemática para evitar problemas a largo plazo. La falta de un esquema estricto también significa que la aplicación es responsable de la interpretación adecuada de los datos que consume, lo que a menudo se denomina “esquema de lectura”.

¿Cómo puede AWS cumplir con los requisitos de bases de datos de clave-valor?

Amazon DynamoDB es una de las bases de datos de clave-valor más populares diseñada para ejecutar aplicaciones de alto rendimiento a cualquier escala. Es una base de datos multirregional y multiactiva totalmente gestionada que ofrece funciones como:

Con este tutorial paso a paso sobre la creación y consulta de una tabla NoSQL, podrá empezar a utilizar DynamoDB en 10 minutos. Cree una cuenta gratuita para comenzar a usar las bases de datos de clave-valor en AWS hoy mismo.

Introducción a Amazon DynamoDB
Modelado de datos de Amazon DynamoDB