La mayoría de los sistemas de gestión de base de datos con los que se trabaja son orientados a filas. Puede que nunca les hayas aplicado esta etiqueta, pero es importante saber porqué se les llama así y que existe otra alternativa: la base de datos columnar.
Para muchos, incluso para los administradores de bases de datos, la necesidad de saber en profundidad cuestiones acerca del diseño de una página de datos, no ha sido algo primordial. Incluso los proveedores de una base de datos columnar, no necesariamente promueven sus productos de esa manera, sino que más bien promueven sus sistemas como la solución de consultas analíticas.
La principal alternativa actual a orientado a filas es orientado a columnas. Una base de datos columnar tienen ahora más importancia ya que pretende proporcionar una mejor propuesta de valor para una carga de trabajo analítica especializada, o incluso para un data warehouse completo.
Algunos tipos de base de datos columnar son:
- Sybase IQ
- SAND
- Vertica
- ParAccel
- InfoBright
- Kickfire
- Exasol
- MonetDB
- Microsoft SQL Server 2008 R2 Gemini/Vertipaq
- Oracle Exadata2 (ambos, por filas y columnar)
- Calpont’s InifiniDB
¿Qué es una base de datos columnar?
Una base de datos columnar es un sistema de gestión de base de datos que almacena los datos en columnas en lugar de filas.
El objetivo de una base de datos columnar es escribir y leer datos de manera eficiente, desde y hacia el almacenamiento en disco duro, para acelerar el tiempo que se tarda en devolver el resultado de una consulta.
En una base de datos columnar, todos los valores de la columna 1 están físicamente juntos, seguido de todos los valores de la columna 2, etc. La información se almacena en orden de registro, por lo que la entrada número 100 para la columna 1 y la entrada número 100 para la columna 2 pertenecen al mismo registro de entrada. Esto permite que a los elementos de datos individuales, como al nombre de un cliente, por ejemplo, se acceda a través de columnas como un grupo en lugar de individualmente fila por fila.
Lo vamos a ver mejor con un ejemplo simple de una base datos de 4 columnas y 3 filas que contiene los siguientes datos:
ID apellido nombre bono
1 González Manuel 6000
2 Martínez Antonio 3000
3 Gutiérrez Alberto 2000
En un sistema de gestión de base de datos orientado a filas los datos se almacenarán de la siguiente manera: 1, González, Manuel, 6000; 2, Martínez, Antonio, 3000; 3, Gutiérrez, Alberto, 2000;
En un sistema de gestión de base de datos columnar los datos se almacenan de la siguiente manera: 1, 2, 3; González, Martínez, Gutiérrez; 6000, 3000, 2000;
Uno de los principales beneficios de una base de datos columnar es que los datos pueden ser altamente comprimidos. La compresión permite que las operaciones columnares como MIN, MAX, SUM, COUNT y AVG se realicen muy rápidamente. Otra ventaja es que debido a que un sistema de gestión de base de datos columnar es auto indexable, utiliza menos espacio en disco que un sistema de gestión de base de datos relacional que contenga los mismos datos.
Sin embargo, a medida que se incrementa la utilización de análisis de datos en memoria, los beneficios relativos de la base de datos columnar comparados con los de las bases de datos orientadas a filas pueden llegar a ser menos importantes. La analítica en memoria no tiene en cuenta la eficiencia en lectura y escritura de datos en un disco duro. En su lugar los datos se consultan en la memoria de acceso aleatorio RAM.