Almacenes de columnas y almacenes de grandes datos

12 enero, 2017

Con una relativa frecuencia hemos detectado una cierta confusión, posiblemente porque reciben una denominación similar, con ciertas soluciones de bases de datos disponibles en mercado, y que están adquiriendo una importancia cada vez mayor. ¿Sabemos la diferencia entre un almacén de columnas (o column store) y un almacén de grandes datos (big data store), también denominado en ocasiones base de datos NoSQL de columnas? Dependiendo de la respuesta (y por supuesto, de vuestro interés), podéis o no seguir leyendo esta entrada.

Distinción entre almacenes de columnas y almacenes de grandes datos.
Distinción entre almacenes de columnas y almacenes de grandes datos.

Los almacenes de columnas se basan en el modelo relacional. Por ello, el lenguaje de creación y manipulación utilizado para trabajar con este tipo de bases de datos es SQL estándar.

Posiblemente, la principal característica de los almacenes de columnas es que los datos se organizan en el dispositivo de almacenamiento externo (por ejemplo, en disco) por columnas. La idea básica de este tipo de almacenamiento, es que los valores que toma cada columna para las diferentes filas de una tabla, se almacenan seguidos en páginas de un fichero, sin mezclarse con los valores que puedan tomar otras columnas. En otras palabras, cada página guarda datos única y exclusivamente de una columna.

Esta forma de almacenamiento viene acompañada con la implementación de toda una serie de mecanismos especializados que permiten resolver de forma eficiente operaciones complejas de consulta sobre la base de datos. Uno de los más obvios es la posibilidad de comprimir los datos (colapsar valores repetidos en uno solo).

Por todo ello, los almacenes de columnas son especialmente idóneos para entornos de naturaleza analítica, es decir, para entornos que son intensivos en lecturas, como sería el caso de entornos OLAP. Dichos entornos se caracterizan por leer y procesar grandes cantidades de datos, con el objetivo de obtener nuevo conocimiento y utilizarlo para impulsar la toma de decisiones. Los almacenes de columnas también son útiles en otros entornos de aplicación intensivos en lecturas, como sería el caso de sistemas CRM y en sistemas de búsqueda en catálogos de e-commerce.

En el mercado existen diferentes implementaciones, algunos ejemplos serían: Vertica (comercializado por Hewlett Packard y basado en un prototipo de investigación denominado C-Store), Actian Vector (previamente comercializado bajo el nombre VectorWise, y basado también en un prototipo de investigación), MonetDB (uno de los productos pioneros y de código abierto), Infobright, SAP Sybase IQ o Amazon Redshift.

Por lo tanto, bajo ningún concepto las podemos considerar bases de datos NoSQL (para una introducción a este tipo de bases de datos podéis ver este vídeo), aunque en ocasiones podamos leer información que las asocien a dicho movimiento. La denominación de NoSQL engloba un conjunto de bases de datos que han sido construidas para soportar entornos de aplicación en donde las bases de datos relacionales no constituyen la mejor la solución. Estos entornos, al menos, tienen una de las dos siguientes características:

-Se trata de entornos que necesitan disponer de esquemas de datos más flexibles, es decir, se trata de entornos que no se ajustan a la estructuración rígida en forma de tabla que ofrecen las bases de datos relacionales. Por ello, las bases de datos NoSQL proponen diferentes modelos de datos (en este vídeo se introducen dichos modelos de datos).

-Se trata de entornos de aplicación altamente distribuidos que necesitan estar siempre operativos (es decir, en línea) y que necesitan gestionar un volumen importante de datos, posiblemente heterogéneos. Sobre estos datos se van a ejecutar tanto operaciones de consulta como de actualización, y frecuentemente se renuncia a la consistencia de los datos.

En origen, su uso más habitual era como bases de datos operacionales, es decir, como bases de datos orientadas a gestionar el día a día de una organización. A pesar de ello, a día de hoy, también existen bases de datos NoSQL que presentan capacidades analíticas.

Uno de los modelos de datos que subyace en NoSQL es el modelo de agregación, el cual se basa en el concepto de agregado. Este modelo es especialmente útil para tratar datos no estructurados y semiestructurados.

En este modelo, cada agregado es una colección de objetos del mundo real que están relacionados entre sí, y que deseamos tratar como una unidad indivisible. Adicionalmente, cada agregado está identificado por una clave.

En el caso concreto de las bases de datos NoSQL de columnas, se ofrece una visión matricial de los datos (y en consecuencia de los agregados): primero por filas y luego por columnas o familias de columnas.

Algunos ejemplos de bases de datos NoSQL de columnas son BigTable (de Google, y usada, por ejemplo, para guardar los datos asociados a Google Maps y Google Earth), Cassandra (construida para mejorar la función de búsqueda en la bandeja de entrada de Facebook, y actualmente proyecto Apache), HBase o Amazon Simple DB.

Una vez llegados a este punto nos podemos plantear nuevas preguntas, como por ejemplo, ¿en qué se diferencian los almacenes de columnas de las bases de datos relacionales tradicionales (en ocasiones, y en contraposición a los almacenes de columnas, reciben el nombre de almacenes de filas o row stores en inglés)? ¿Los almacenes de columnas tienen alguna relación con las bases de datos en memoria (in-memory databases)? ¿Y los almacenes de grandes datos? En este vídeo (perteneciente a nuestro máster de Inteligencia de negocio y Big Data), podéis encontrar las respuestas a estas preguntas, así como explicaciones más detalladas sobre las diferencias entre los almacenes de columnas y los almacenes de grandes datos.
 
M. Elena Rodríguez y Jordi Conesa son profesores de los Estudios de Informática, Multimedia y Telecomunicación. Su actividad docente se centra en modelado conceptual, bases de datos y Business Intelligence.

(Visited 105 times, 1 visits today)
Autor / Autora
Comentarios
Deja un comentario