La plataforma de base de datos Couchbase soporta dos mecanismos de almacenamiento: Couchstore, el predeterminado, y Magma, el motor lanzado recientemente. Ambos ofrecen ventajas en distintos escenarios. Esta entrada de blog ofrece una breve descripción del nuevo motor de almacenamiento Magma, ofrece una comparación de cada motor y resume los resultados de la parámetros de rendimiento.
Couchstore es un motor de almacenamiento maduro que está optimizado para ofrecer un alto rendimiento con grandes conjuntos de datos, especialmente los que caben en la memoria. El tamaño mínimo de bucket para Couchstore es de 100 MB. Es ideal para casos de uso de caché y situaciones en las que la compresión de datos no es un factor decisivo principal.
Magma es un nuevo motor de almacenamiento diseñado para ofrecer un alto rendimiento incluso con conjuntos de datos muy grandes que no caben en la memoria. Es trascendente para casos de uso en los que el acceso al disco es primordial. Magma está optimizado para funcionar con cantidades muy bajas de memoria incluso con conjuntos de datos muy grandes. Magma brilla realmente cuando se utiliza para conjuntos de datos que no caben en la memoria disponible y que requieren la máxima compresión de datos.
A continuación se muestra una tabla comparativa que resume cada mecanismo de almacenamiento.
Comparación entre Couchstore y Magma
Criterios | Tienda de sofás | Magma |
Cuota mínima de memoria del cubo | 100 MB | 1 GB |
Relación mínima entre memoria y datos | 10% | 1% |
Datos máximos por nodo | 3TB | 10TB |
Optimización del tamaño de los datos | Mejor cuando el conjunto de datos de trabajo cabe en la memoria | Mejor cuando el conjunto de trabajo es mucho mayor que la memoria disponible y sólo necesita velocidad de acceso al disco |
Almacenar y acceder | Acceso a datos de hasta ~ 1 TB | Almacenar y acceder a varios terabytes de datos |
Hardware | Puede funcionar con hardware de gama baja | Se prefiere el hardware de calidad |
Servicios de apoyo | Todos los servicios, incluidos la búsqueda de texto completo, la gestión de eventos y los análisis, están disponibles. | Todos los servicios, incluidos los de búsqueda de texto completo, eventos y análisis, están disponibles en la versión 7.1.2 GA. |
Persistencia de datos | La mayoría de los datos se acceden desde la memoria caché | Las aplicaciones necesitan grandes cantidades de datos persistentes y duraderos |
Casos prácticos | El caso de uso requiere principalmente acceso a memoria | El caso de uso requiere principalmente acceso a disco |
Magma
Magma es el motor de almacenamiento de documentos de nueva generación de Couchbase Server. Fue diseñado con el objetivo de mejorar tanto la densidad de datos como el rendimiento de escritura en cada nodo del cluster. Consigue estos objetivos separando los datos de índice y de documento para minimizar la amplificación de escritura (WA). La amplificación de escritura se refiere a la escritura de datos en el almacenamiento de archivos, donde la escritura se multiplica debido a factores como los datos inmutables. Magma también incluye un método de compactación incremental para mantener el espacio y permitir una alta densidad de datos y menores requisitos de memoria. La reducción de la amplificación de escritura aumenta el rendimiento de escritura y también prolonga la esperanza de vida de las unidades SSD al reducir el número de ciclos de escritura-borrado.
Otros objetivos de diseño del proyecto Magma eran:
Compactaciones concurrentes escalables - La compactación completa de una base de datos es una operación costosa. La gestión de una base de datos de alta densidad requiere compactaciones pequeñas, concurrentes e incrementales para recuperar espacio.
Optimización de las unidades de estado sólido (SSD) - La E/S aleatoria se minimizó para que sólo se produjera durante las operaciones de búsqueda de puntos. Mientras que los patrones de acceso de E/S de lectura y escritura secuenciales se aprovechan para sacar partido de todo el ancho de banda de los SSD.
Ocupa poca memoria - La alta densidad de datos disminuye la posibilidad de almacenamiento en caché de lectura y escritura. Por eso, Magma está optimizado para ocupar poco espacio en la memoria.
Recogida de basuras - Magma incluye un método para estimar la fragmentación en el almacén de objetos con estructura de registro y calcular con precisión la fragmentación del disco. Esto se utiliza para calcular el tamaño de basura por segmento de registro que activa las compactaciones cuando la fragmentación alcanza un umbral de 50%.
Un aspecto clave de la arquitectura Magma es el almacén de objetos con estructura de registro, que almacena documentos en un registro segmentado de sólo apéndice. El almacén con estructura de registro mantiene un índice que permite consultar un documento por número de secuencia. El almacén de objetos contiene archivos de segmentos de registro que se organizan secuencialmente utilizando un registro creciente con una cola para aceptar escrituras entrantes (véase el diagrama de arquitectura del almacén de objetos Magma más abajo). El subproceso en segundo plano añade las mutaciones de documentos al registro de cola y cada documento recibe un único segno.

Arquitectura del almacén de objetos Magma
Aunque el registro puede contener varias versiones inmutables del documento con la misma clave, las versiones más antiguas se vuelven obsoletas cuando se añaden nuevas versiones. Las operaciones de lectura siempre leen la última versión, por lo que cuando se realiza una búsqueda de claves se devuelve la última versión del documento. Con el tiempo, los registros obsoletos se eliminan del almacenamiento y se utiliza un proceso de recogida de basura independiente para recuperar espacio.
Resumen de resultados
Magma se sometió a pruebas de rendimiento contra RocksDB y Couchstore. La evaluación se centró en el rendimiento y la amplificación de escritura y espacio para varias cargas de trabajo de Yahoo! Cloud Serving Benchmark (YCSB) con datos demasiado grandes para caber en la memoria. Durante dos rondas de pruebas las conclusiones fueron:
Ronda 1
-
-
- Magma es 1,77 veces más rápido y tiene 3,38 veces menos amplificación de escritura que RocksDB.
- Magma es 36 veces más rápido y tiene 5 veces menos amplificación de escritura que Couchstore.
-
Ronda 2
-
-
- Magma es 1,25 veces más rápido y tiene 2,36 veces menos amplificación de escritura que RocksDB.
- Magma es 21 veces más rápido y tiene 3,37 veces menos amplificación de escritura que Couchstore.
-
Conclusión
Gracias a las mejoras de eficiencia de Magma, la densidad de datos de una sola máquina soportada por Couchbase Server se incrementó en 3,3 veces y el requisito de memoria en 10 veces, lo que redujo el coste total de propiedad (TCO) hasta 10 veces. Los resultados de la evaluación del rendimiento mostraron que Magma superó a los motores Couchstore y RocksDB en cargas de trabajo YCSB de escritura intensiva con conjuntos de datos demasiado grandes para la memoria.
Para obtener más información sobre el motor de almacenamiento de documentos de nueva generación, consulte el siguiente documento: Magma: Un motor de almacenamiento de alta densidad de datos utilizado en Couchbase. Gracias por dedicar tu tiempo a descubrir por qué Magma ES el motor de almacenamiento de documentos de nueva generación.