Una base de datos de clave-valor , o almacén de clave-valor , es un paradigma de almacenamiento de datos diseñado para almacenar, recuperar y administrar matrices asociativas y una estructura de datos más comúnmente conocida hoy como diccionario o tabla hash . Los diccionarios contienen una colección de objetos o registros , que a su vez tienen muchos campos diferentes dentro de ellos, cada uno de los cuales contiene datos. Estos registros se almacenan y recuperan utilizando una clave que identifica de forma única el registro y se utiliza para encontrar los datos dentro de la base de datos .
Las bases de datos de clave-valor funcionan de una manera muy diferente a las bases de datos relacionales (RDB) más conocidas. Las RDB predefinen la estructura de datos en la base de datos como una serie de tablas que contienen campos con tipos de datos bien definidos . Exponer los tipos de datos al programa de base de datos le permite aplicar una serie de optimizaciones. Por el contrario, los sistemas de clave-valor tratan los datos como una única colección opaca, que puede tener campos diferentes para cada registro. Esto ofrece una flexibilidad considerable y se ajusta más a conceptos modernos como la programación orientada a objetos . Debido a que los valores opcionales no están representados por marcadores de posición o parámetros de entrada, como en la mayoría de las RDB, las bases de datos de clave-valor a menudo utilizan mucha menos memoria para almacenar los mismos datos, lo que puede generar grandes ganancias de rendimiento en ciertas cargas de trabajo. [ cita requerida ]
Durante muchos años, el rendimiento, la falta de estandarización y otros problemas han limitado los sistemas de clave-valor a usos específicos, pero el rápido paso a la computación en la nube después de 2010 ha dado lugar a un renacimiento como parte del movimiento NoSQL más amplio . Algunas bases de datos de gráficos , como ArangoDB , [1] también son bases de datos de clave-valor internamente, lo que añade el concepto de las relaciones ( punteros ) entre registros como un tipo de datos de primera clase.
Las bases de datos de clave-valor pueden utilizar modelos de consistencia que van desde la consistencia eventual hasta la serialización . Algunas admiten el ordenamiento de claves.
Algunos mantienen los datos en la memoria (RAM) , mientras que otros emplean unidades de estado sólido o discos giratorios .
Cada entidad (registro) es un conjunto de pares clave-valor. Una clave tiene múltiples componentes, especificados como una lista ordenada. La clave principal identifica el registro y consta de los componentes principales de la clave. Los componentes subsiguientes se denominan claves secundarias. Esta organización es similar a una especificación de ruta de directorio en un sistema de archivos (por ejemplo, /Mayor/menor1/menor2/). La parte del “valor” del par clave-valor es simplemente una cadena de bytes no interpretada de longitud arbitraria. [2]
El sistema Unix proporciona dbm (administrador de bases de datos), que es una biblioteca de 1979 escrita originalmente por Ken Thompson . También se ha adaptado a Microsoft Windows , a través de lenguajes de programación como Perl para Win32 . El dbm administra matrices asociativas de datos arbitrarios mediante el uso de una clave única (una clave principal). Las implementaciones modernas incluyen sdbm, GNU dbm y Berkeley DB . Aunque dbm precede al concepto de NoSQL y rara vez se menciona en el discurso moderno, se utiliza en muchos programas.
Un ejemplo más reciente de una base de datos de clave-valor es RocksDB , que se utiliza como motor de almacenamiento para otros sistemas de gestión de bases de datos, como ArangoDB . Otros ejemplos incluyen Aerospike (base de datos) , Amazon DynamoDB , Memcached , Redis y ScyllaDB .