¿Qué es una tienda distribuida de valor-clave? ¿Cuál fue la motivación para diseñarlo en primer lugar?

Los almacenes de valores clave son en realidad muy antiguos y las primeras cosas que pensaríamos como “bases de datos” se organizaron en torno a claves de búsqueda y valores asociados: base de datos de navegación.

Las claves a veces eran ubicaciones físicas en el almacenamiento, o más tarde hashes o lo que podríamos considerar hoy en día como una clave principal almacenada en algún tipo de estructura de búsqueda, como un árbol B. La “parte del valor” podría ser un valor único o algún tipo de estructura de fila o tupla con múltiples valores, y podría incluir claves para otros registros en la base de datos como enlaces “duros”.

Un almacén de valores clave distribuido es un almacén de valores clave alojado en varias instancias o almacenes de datos separados. Las instancias pueden estar en el mismo host o en varios hosts, según los requisitos de la aplicación. Típicamente, la asignación a instancias particulares se realiza utilizando algún tipo de enfoque Shard (arquitectura de base de datos), con la instancia de un registro determinado determinado usando algo como una función hash en la clave del registro. Un ejemplo (entre varios motores NoSQL populares) de un almacén distribuido de valores clave es Apache Cassandra.

Los almacenes de valores clave tienen muchos usos y ventajas sobre las bases de datos relacionales para ciertos casos de uso (especialmente para bases de datos de documentos, almacenamiento de información de usuarios y otros para juegos en línea, etc.), y la mayoría de las bases de datos NoSQL son algún tipo de almacén de valores clave. Usted “distribuiría” un almacén de valores clave si fuera demasiado grande para ser manejado por una sola instancia, o si quisiera implementar el equilibrio de carga y evitar problemas de punto único de falla que pueden surgir de un enfoque de instancia única.

Un almacén de valores clave (o más descriptivamente, un sistema de almacenamiento) es un tipo de base de datos en el que cada entrada tiene una clave y un valor asociado. Esto es radicalmente diferente al almacenamiento orientado a bloques tradicional, que emula los bloques de disco que han existido desde los días de DASD.

Un valor-clave es más eficiente porque requiere menos traducciones de formato.

Hacerlo distribuido debería ser obvio. Si no se distribuye, entonces es un punto único de falla para cada sistema que depende de él.