Una base de datos clave-valor, o almacén clave-valor, es un paradigma de almacenamiento de datos diseñado para almacenar, recuperar y administrar matrices asociativas, una estructura de datos más comúnmente conocida hoy en día como un 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 se recuperan utilizando una clave que identifica de manera única el registro y se utiliza para encontrar rápidamente los datos dentro de la base de datos.
Las bases de datos clave-valor funcionan de forma muy diferente a las más conocidas bases de datos relacionales (BDR). Las BDR predefinen la estructura de datos como una serie de tablas que contienen campos con tipos de datos bien definidos. La presentación de 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 sigue más de cerca conceptos modernos como la programación orientada a objetos. Dado que los valores opcionales no se representan mediante marcadores de posición o parámetros de entrada, como en la mayoría de las bases de datos de valores clave, las bases de datos de valores clave suelen utilizar mucha menos memoria para almacenar la misma base de datos, lo que puede dar lugar a grandes aumentos de rendimiento en determinadas cargas de trabajo.[cita requerida]
El rendimiento, la falta de estandarización y otros problemas limitaron los sistemas de clave-valor a usos especializados durante muchos años, pero el rápido paso a la computación en la nube después de 2010 ha llevado a su renacimiento como parte del movimiento más amplio de NoSQL. Algunas bases de datos de grafos son también bases de datos de clave-valor internamente, añadiendo el concepto de las relaciones (punteros) entre registros como un tipo de datos de primera clase.
Tipos y ejemplos
Las bases de datos clave-valor pueden utilizar modelos de consistencia que abarcan desde la consistencia final (eventual consistency) hasta la serializabilidad. Algunos permiten la ordenación de claves.
Algunos mantienen los datos en memoria (RAM), mientras que otros utilizan unidades de disco duro o unidades de estado sólido.
Cada entidad (registro) es un conjunto de pares clave-valor. Una clave tiene varios componentes que se especifican en forma de lista ordenada. La clave principal identifica el registro y consta de los primeros elementos de la clave. Los componentes posteriores se denominan claves menores. Esta organización es similar a la especificación de ruta en un sistema de archivos (por ejemplo, /Principal/menor1/menor2). La parte del «valor» en el par clave-valor no es más que una cadena no interpretada de bytes de longitud arbitraria.[1]
El sistema Unix proporciona dbm (database manager, gestor de bases de datos), que es una biblioteca de 1979 escrita originalmente por Ken Thompson, y que también se ha portado a Microsoft Windows a través de lenguajes de programación como Perl para Win32. El dbm gestiona vectores asociativos de datos arbitrarios mediante el uso de una clave única (una clave primaria). Algunas implementaciones actuales son sdbm, GNU dbm y Berkeley DB. Aunque dbm es anterior al concepto de NoSQL y raramente se menciona en la actualidad, es empleado por numerosas aplicaciones de software.
Un ejemplo más reciente de base de datos clave-valor es RocksDB, que se utiliza como motor de almacenamiento para otros sistemas gestores de bases de datos tales como ArangoDB. Otros ejemplos son Aerospike, Amazon DynamoDB, Memcached, Redis y ScyllaDB.