HSE, un motor de almacenamiento open source, optimizado SSE para SSD
Micron Technology (una compañía especializada en la producción de DRAM y memoria flash) dio a conocer la introducción de un nuevo motor llamado “HSE” (Heterogeneous-memory Storage Engine), que se desarrolló teniendo en cuenta las características específicas del uso en unidades SSD basadas en flash NAND (X100, TLC, QLC 3D NAND) o memoria de solo lectura (NVDIMM).
El motor está hecho en forma de una biblioteca para incrustar en otras aplicaciones y admite el procesamiento de datos en el formato clave-valor. El código HSE está escrito en C y distribuido bajo la licencia Apache 2.0.
Entre las aplicaciones del motor, se mencionan aplicaciones para almacenamiento de datos de bajo nivel en DBMS NoSQL, almacenes de software (SDS, almacenamiento definido por software) como Ceph y Scality RING, plataformas para procesar grandes cantidades de datos (Big Data), sistemas informáticos de alto rendimiento (HPC), dispositivos de Internet cosas (IoT) y soluciones para sistemas de aprendizaje automático.
HSE está optimizado no solo para lograr el máximo rendimiento, sino también para garantizar la durabilidad de varias clases de unidades SSD. La alta velocidad se logra a través de un modelo de almacenamiento híbrido: los datos más relevantes se almacenan en la memoria caché, lo que reduce la cantidad de accesos al disco.
Como ejemplo de integración del nuevo motor en proyectos de terceros, se preparó una versión del DBMS MongoDB orientado a documentos, que se tradujo para usar HSE.
Tecnológicamente, HSE se basa en un módulo de núcleo adicional mpool, que implementa una interfaz especializada para almacenar objetos para unidades de estado sólido, teniendo en cuenta sus capacidades y características, lo que permite obtener características fundamentalmente diferentes de velocidad y durabilidad. Mpool también es un desarrollo de Micron Technology abierto simultáneamente con el HSE, pero se destaca como un proyecto de infraestructura independiente. Mpool asume el uso de memoria persistente y almacenamiento de zona , pero actualmente solo se admiten SSD tradicionales.
Las pruebas de rendimiento con el paquete YCSB (Yahoo Cloud Serving Benchmark) mostraron un aumento significativo en el rendimiento al usar un almacenamiento de 2 TB con procesamiento de bloques de datos de 1 KB. Se observa un aumento de rendimiento particularmente significativo en la prueba con una distribución uniforme de las operaciones de lectura y escritura.
Por ejemplo, MongoDB con el motor HSE resultó ser aproximadamente 8 veces más rápido que la versión con el motor WiredTiger estándar, y el motor RocksDB DBMS superó al HSE en más de 6 veces. Los indicadores excelentes también son visibles en las pruebas, que presentan el 95% de las operaciones de lectura y el 5% de los cambios o adiciones.
Otra prueba realizada implica solo operaciones de lectura, demuestra una ganancia de aproximadamente el 40%. El aumento en la capacidad de supervivencia de las unidades SSD durante las operaciones de escritura en comparación con la solución basada en RocksDB se estima en 7 veces.
Características clave de HSE:
- Soporte para operadores estándar y avanzados para procesar datos en formato clave / valor;
- Soporte completo de transacciones y con la capacidad de aislar segmentos de almacenamiento mediante la creación de instantáneas (las instantáneas también se pueden usar para mantener colecciones independientes en una tienda).
- Capacidad para usar cursores para atravesar datos en representaciones basadas en instantáneas.
- Un modelo de datos optimizado para tipos de carga mixta en un único repositorio.
- Mecanismos flexibles para gestionar la fiabilidad del almacenamiento.
- Esquemas de orquestación de datos personalizables (distribución a través de diferentes tipos de memoria presentes en el repositorio).
- Una biblioteca con una API C que puede vincularse dinámicamente a cualquier aplicación.
La capacidad de escalar a terabytes de datos y cientos de miles de millones de claves en almacenamiento. - Procesamiento efectivo de miles de operaciones paralelas.
- Aumento significativo en el ancho de banda, latencia reducida y mayor escritura/lectura para varios tipos de carga de trabajo en comparación con las soluciones alternativas típicas.
- La capacidad de usar diferentes clases de SSD en el mismo almacenamiento para optimizar el rendimiento y la durabilidad.
Puedes acceder al código del motor desde el siguiente enlace.