Formato de Datos Columnar y Sus Ventajas en Big Data

  • Tiempo de lectura:8 minutos de lectura
  • Autor de la entrada:
  • Última modificación de la entrada:14/07/2024

En esta entrada aprenderás qué es el formato de datos columnar. También podrás ver cuáles son sus ventajas y aplicaciones en en análisis de datos y en las herramientas Big Data más populares.

Formato columnar para almacenar datos: Apache Parquet y Apache ORC

¿Qué son los formatos de almacenamiento Columnar?

Los formatos de fichero columnares almacenan los datos por columnas. Muchos formatos tradicionales almacenan los datos por filas. Algunos de estos ejemplos son CSV, Avro o JSON. Los formatos de almacenamiento columnar más populares son Apache Parquet y Apache ORC.

Si tomamos como ejemplo un JSON o un CSV:

{"id": "1","nombre": "Oscar","ciudad": "Madrid"}
{"id": "2","nombre": "Juan","ciudad": "Barcelona"}
id, nombre, ciudad
1, Oscar, Madrid
2, Juan, Barcelona

Vemos que en ambos casos, cada fila contiene un elemento de datos completo. A continuación se muestra un ejemplo de un formato columnar ficticio para ilustrar las diferencias:

id: 1,2
nombre: Oscar, Juan
ciudad: Madrid, Barcelona

Bases de Datos Basadas en Filas y en Columnas

Los formatos de almacenamiento basados en filas y en columnas cobran mucha importancia en el diseño de bases de datos. Las bases de datos transaccionales (OLTP) almacenan los datos en filas, mientras que las bases de datos OLAP almacenan los datos por columnas. ¿Por qué ocurre esto?

La diferencia principal es la manera de almacenar los datos en los discos. Los discos están organizados en bloques, y, por tanto, las operaciones de lectura y escritura secuenciales son más rápidas que el acceso aleatorio a secciones de los discos. Con esta organización, las bases de datos almacenan la totalidad de cada fila en el mismo bloque siempre que sea posible.

En el caso del almacenamiento columnar, se almacena cada columna de forma individual, con valores de varias filas.

Beneficios del Formato Columnar

Almacenar los datos en un formato columnar nos aporta ventajas y optimizaciones en las operaciones de lectura de datos. Estas mejoras son especialmente notables cuando realizamos consultas que devuelven filas y filtros sobre estas, ya que se ahorra gran cantidad de cómputo.

Data Warehouse IA

Las operaciones de consulta con estas características son típicas del proceso de análisis de datos, por lo que las bases de datos con almacenamiento columnar suelen orientarse a herramientas de data warehouse y reporting. Algunos ejemplos son Redshift, BigQuery o Snowflake.

Además de las ventajas relacionadas con las lecturas, el formato columnar permite comprimir los datos de manera más eficiente. Al agrupar el almacenamiento por columnas independientes, también se están agrupando tipos de datos similares, lo que aumenta el ratio de compresión de muchos codecs como Snappy.

El formato columnar más usado en herramientas Big Data es Apache Parquet. Este formato hace un uso eficiente de la organización de los datos y a través de metadatos. Esto permite que tecnologías como Spark, Hive o Impala puedan acelerar las consultas hasta 100 veces respecto a tecnologías basadas en formatos de almacenamiento por filas.

Inconvenientes del Formato Columnar

Como la mayoría de las cosas, el almacenamiento columnar también tiene sus inconvenientes. El principal está relacionado con el coste de modificar filas. En este caso, la herramienta debe reconstruir la fila completa leyendo varias columnas en varias ubicaciones, y después modificar las columnas afectadas.

Debemos tener en cuenta también, que los formatos columnares se usan en bases de datos para analítica, que suelen contener datasets con un gran número de columnas. El impacto en el coste de recursos como CPU y RAM de estas operaciones aumenta cuantas más columnas contenga nuestro dataset.

Por estas razones, las herramientas basadas en formatos de datos columnares tienen un mal comportamiento en la ingesta de datos, y no son adecuadas para realizar ingestas en tiempo real o que necesitan de un gran throughput. Para estos casos, bases de datos transaccionales serán una mejor opción.

Preguntas Frecuentes – FAQ

¿Cómo se compara el formato de datos columnar con el formato de datos de fila tradicional?

El formato de datos de fila tradicional es más adecuado para transacciones en línea (OLTP) y operaciones de registro únicos, mientras que el formato de datos columnar es más adecuado para aplicaciones analíticas y operaciones que requieren un procesamiento de datos rápido y eficiente.

¿Qué tipo de aplicaciones se benefician más del uso del formato de datos columnar?

El formato de datos columnar es especialmente beneficioso para aplicaciones analíticas que implican la ejecución de consultas selectivas sobre grandes conjuntos de datos. También es útil en aplicaciones que requieren una alta velocidad de lectura de datos, como en la visualización de datos o en la generación de informes en tiempo real.

¿Cómo se compara el rendimiento del formato de datos columnar con el formato de datos de fila tradicional?

El formato de datos columnar suele ser más eficiente para consultas analíticas que implican lectura de un subconjunto de columnas de una tabla. En cambio, el formato de fila puede ser más adecuado para aplicaciones OLTP que requieren acceso rápido a todas las columnas de una fila.

Deja una respuesta