Imagine un almacenamiento flash que almacene datos exactamente en el formato que utilizan las aplicaciones. Eso es lo que prometen los medios flash de valor clave, tal como lo prevén al menos un gran fabricante de unidades, algunos investigadores y empresas emergentes, y en el conjunto de comandos de valor clave NVMe. Sin embargo, las manifestaciones productivas del almacenamiento de valor clave son más que escasas. Se han realizado investigaciones sobre el tema y hemos visto el desarrollo de un conjunto de comandos para valor clave en NVMe, como se mencionó. Mientras tanto, en 2019, Samsung anunció un prototipo de unidad de valor clave, que se integró en una empresa derivada llamada Stellus con planes para una matriz de almacenamiento de valor clave, pero esto parece haber quedado relegado al archivo de «dónde están ahora». Más recientemente, la empresa emergente QiStor lanzó planes para producir software de almacenamiento y chips FPGA para almacenamiento de valor clave, y afirma que puede ser una gran oportunidad de mercado. La idea es que al retener los datos en formato de clave-valor, se hace mucho más eficiente, rápido, energéticamente eficiente y duradero en comparación con el proceso de entrada/salida (E/S) multicapa existente. Actualmente, las aplicaciones y los hosts deben traducir la E/S de almacenamiento en direccionamiento de bloque lógico (LBA) a nivel de unidad para que los datos puedan ubicarse durante las operaciones de lectura/escritura. Ese es un método de direccionamiento de datos que se remonta a los orígenes de los discos duros giratorios y su modus operandi LBA. Y así, los desarrolladores de almacenamientos de clave-valor notaron ineficiencias en la E/S resultantes. En otras palabras, ahora mismo, si una aplicación interactúa con una base de datos de clave-valor, debe comunicarse con esa base de datos y luego traducir el direccionamiento de clave-valor a través del sistema de archivos del host y al lenguaje LBA para encontrar la ubicación física de los datos en el disco. Ese proceso contiene un montón de pasos que podrían eliminarse para hacerlo más eficiente. Pero también, el direccionamiento de bloque lógico trae otras ineficiencias que el almacenamiento de clave-valor puede eliminar. El almacenamiento flash sufre de una durabilidad deficiente como resultado de borrados y reescrituras. Dicha actividad se amplifica porque cada vez que se sobrescriben datos (en bloques de un tamaño diferente a los bloques LBA), deben borrarse, moverse y escribirse en otro lugar. Esa necesidad se vuelve más apremiante a medida que el dispositivo se llena, por lo que una sola escritura en el disco puede resultar en múltiples escrituras (conocidas como recolección de basura) a medida que se mueven los datos. Todo lo cual crea desgaste y acorta la vida útil de la unidad. Por el contrario, el almacenamiento de valor clave permite que la aplicación se comunique directamente con los medios sin necesidad de traducción a través del SO, el sistema de archivos y el LBA del medio. Esto se debe a que el almacenamiento de valor clave no necesita saber qué bloque físico buscar para encontrar lo que quiere. En cambio, el almacenamiento de valor clave administra la ubicación de los datos y sabe dónde residen los valores. El host, el SO y el sistema de archivos no participan en el proceso. Si se busca un valor, el dispositivo busca en sus tablas de mapeo internas para encontrar dónde se encuentra su clave. El modelo de clave-valor es una forma de almacenamiento de datos muy extendida y en pleno auge que se encuentra, por ejemplo, en el formato JSON, en el almacén de datos etcd en Kubernetes, como un tipo de datos en los lenguajes de programación JavaScript y Python, y es la base de las bases de datos NoSQL. En el modelo de clave-valor, la clave es el nombre de una variable y el valor es su valor o valores. Las claves y los valores pueden tener cualquier longitud y ser de distintos tipos de datos (por ejemplo, numéricos, de caracteres, incluso imágenes o archivos de sonido) y también pueden estar anidados, por lo que una clave puede tener un valor que sea otra clave, con sus propios valores.