3.1. MariaDB orientado a columnas

3.1. MariaDB orientado a columnas#

Introducción#

Una BD orientada a columnas es un repositorio de gestión datos que almacena su contenido por columnas, en lugar de por filas. La columna es el elemento base y está compuesto por un nombre y un valor.

Al mismo tiempo, hay que resaltar que este SGBD posee una arquitectura distribuida y escalable horizontalmente, lo que hace que su eficiencia sea mejor. Como podemos observar en la siguiente figura (obtenida de acá), el almacenamiento es distribuído donde cada nodo posee columnas enteras o partes de ellas, según el requerimiento de espacio y rendimiento. Como podemos observar, cuando un cliente hace una consulta, el MODULO DE USUARIO (UM) la interpreta y divide el trabajo. Luego, los MODULOS DE PERFORMANCE (PMs) ejecutan los fragmentos de la consulta en paralelo sobre los datos que tienen. Finalmente, UM recolecta los resultados y los devuelve al cliente.

El manual de MariaDB orientado a columnas lo podemos encontrar aca.

Trabajamos con phpMyAdmin#

Entramos al phpMyAdmin. Como podemos observar en la interface Web, las tablas y BDs creadas son similares cuando estan orientadas a las filas y cuando lo estan a las columnas. Es decir visualmente se ven iguales. Sin embargo, podemos observar en las características de las tablas que fueron creadas orientadas a columnas, como vemos en la figura siguiente.

Sin embargo, lo más importante es conocer qué operaciones son mejores y más eficientes en cada una de las opciones, como se vió en la teoría.

MariaBD: filas vs columnas#

En la tabla siguiente podemos observar algunas de las categorías utilizadas para comparar ambos paradigmas.

Funcionalidad o SQL Maria DB (InnoDB) MariaDB ColumnStore
Atomicidad individual (1 operación) Si, varias operaciones SI, una sola operación
Transacciones (BEGIN, COMMIT, ROLLBACK) SI NO
Aislamiento / control de concurrencia SI NO, se hace un LOCK completo al escribir, no hay LOCK al leer
Consistencia Varias operaciones SI, una sola operación
Índices (CREATE INDEX) SI No usa índices
Durabilidad SI SI
Actualizaciones (UPDATE/DELETE) Eficientes Lentas, conviene reemplazar la tabla
Funciones agregadas (SUM, AVG, etc.) SI Eficiente en grandes volúmnes de datos
Soporte OLTP (transacciones) SI No recomendado
Procedimientos almacenados (STORED PROCEDURE) SI NO
Triggers (AFTER INSERT, etc.) SI NO
Rendimiento de inserciones masivas (LOAD DATA) SI, bueno SI, está optimizado para cargas masivas