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 |