Bases de Datos Columnares: Eficiencia en Consultas Analíticas

Clase 3 de 33Curso de AWS Redshift para Manejo de Big Data

Contenido del curso

Cómo diseñar tu base de datos para mejorar su desempeño

Manipular enormes cantidades de datos

Resumen

Procesar grandes volúmenes de datos de forma rápida y eficiente es el objetivo central de las bases de datos columnares. Redshift, el servicio de Amazon, es una de las más populares en este campo, y entender su diferencia con las bases de datos tradicionales orientadas a filas es fundamental para cualquier profesional que trabaje con datos a escala.

¿Cómo almacenan los datos las bases de datos orientadas a filas?

Las bases de datos que probablemente ya conoces, como Postgres, MySQL u Oracle, son bases de datos orientadas a filas [01:00]. Su propósito es claro: procesar la lectura y escritura de filas únicas de manera rápida e íntegra. Cada fila completa se almacena en un bloque de datos en el disco duro.

Piensa en el ejemplo de un banco. Cuando un cliente retira dinero, la base de datos necesita localizar un solo registro (la tarjeta específica) y actualizar su saldo [02:02]. Esto ocurre miles de veces por segundo, y las bases de datos orientadas a filas están optimizadas exactamente para eso.

Estas bases de datos están orientadas al modelo OLTP (Online Transaction Processing) [02:50], que soporta toda la operación transaccional de un negocio, desde una startup hasta un banco.

¿Cuáles son las limitaciones para la analítica?

Aunque puedes hacer reportes sobre bases de datos orientadas a filas, existen dos problemas grandes cuando se trata de analítica [03:22]:

  • Los bloques de datos usualmente pesan 32 kilobytes. Si una fila pesa menos, de igual manera ocupa ese espacio, lo que genera desperdicio.
  • Si necesitas analizar solo dos columnas de una tabla de diez, la base de datos debe recorrer los bloques completos con las ocho columnas restantes que no necesitas.

Esto se traduce en consultas lentas e ineficientes cuando trabajas con grandes volúmenes de datos para fines analíticos.

¿Qué hace diferente a una base de datos columnar?

El cambio es conceptualmente sencillo pero poderoso: en lugar de guardar cada fila completa en un bloque, la base de datos columnar almacena columna por columna en bloques de datos independientes [04:17]. La primera columna ocupa su propio bloque, la segunda otro, y así sucesivamente.

En analítica de datos no buscas un registro específico para actualizarlo. Quieres ver cómo se comportan los datos como un todo, identificar tendencias y patrones [04:40].

¿Por qué Redshift es tan eficiente en consultas analíticas?

Redshift ocupa un megabyte por cada bloque de datos [05:04], mucho más espacio que los 32 kilobytes de las bases orientadas a filas. Esto significa que en un solo bloque puedes tener muchas más filas agrupadas de una única columna, optimizando enormemente el almacenamiento.

Además, si solo necesitas dos columnas para tu análisis, la consulta accede únicamente a esos dos bloques de datos. El resto ni siquiera se toca [05:23]. Esto se traduce en tiempos de respuesta mucho más bajos, algo que le salva la vida a cualquier data scientist.

¿Cuáles son las desventajas de las bases columnares?

Las operaciones de actualización y eliminación son un verdadero dolor de cabeza [05:52]. Un ejemplo real lo ilustra perfectamente: durante un proceso de ETL (Extract, Transform, Load) alimentando un data warehouse, se duplicó un valor en aproximadamente dos mil registros [06:15].

  • En una base orientada a filas, esos registros se actualizan de forma sencilla usando la llave primaria.
  • En la base columnar, el update no respondió después de media hora [06:55].
  • La solución fue eliminar los datos mal creados mediante una tabla extra y volver a cargarlos [07:16].

Esto ocurre porque para cambiar un valor en una columna hay que identificarlo a través de otra columna almacenada en un bloque completamente diferente.

¿Qué alternativas existen y por qué elegir Redshift?

Existen otras bases de datos columnares destacadas en el mercado [07:56]:

  • Google BigQuery: rápida y capaz de procesar grandes cantidades de datos.
  • Apache HBase: parte del ecosistema Hadoop, muy usada en big data.
  • Snowflake: ha ganado mucha fuerza en los últimos años.

Sin embargo, Redshift ofrece ventajas competitivas claras [08:18]:

  • Integración total con el ecosistema de Amazon: bases de datos, file servers, permisos y roles se conectan de forma nativa.
  • Es actualmente la base de datos más rápida y más económica en la nube [08:47].
  • Es compatible con cualquier cliente SQL como DBeaver o SQL Workbench [09:05], sin necesidad de aprender herramientas propietarias.

La regla es simple: las bases orientadas a filas son perfectas para OLTP y aplicaciones transaccionales, mientras que las columnares brillan en el procesamiento y la analítica de datos [07:30]. Cada una puede hacer lo que hace la otra, pero con tiempos significativamente más lentos. Elegir la herramienta correcta marca toda la diferencia en tu arquitectura de datos.