Por Franco Tasso, desarrollador y data scientist en Notus.
¿Cómo abordar el análisis de datos a gran escala?
En un contexto donde los volúmenes de datos crecen de forma exponencial, es clave contar con herramientas que permitan analizarlos de manera eficiente, sin perder flexibilidad ni precisión. Desde nuestra experiencia en Notus, hemos trabajado con distintas tecnologías para abordar este tipo de desafíos, y una de las que destaca por su rendimiento y escalabilidad es BigQuery, el data warehouse serverless de Google Cloud.
Más allá de su potencia técnica, BigQuery ofrece una arquitectura que se adapta bien a los requerimientos típicos de proyectos donde se necesita procesar grandes cantidades de datos en poco tiempo, sin preocuparnos tanto por la infraestructura.
¿Qué es BigQuery?
BigQuery es un data warehouse serverless, altamente escalable de Google Cloud, diseñado para procesar petabytes de datos con SQL estándar y latencia en segundos. Combina capacidades de almacenamiento columnar avanzado, procesamiento distribuido y herramientas integradas de Machine Learning (Big Query ML), permitiendo analizar tanto datos estructurados como semi-estructurados, sin gestión de infraestructura. Tiene integración nativa con Google Cloud Storage, solo basta almacenar los datos.
Arquitectura de BigQuery
Una de las características fundamentales de BigQuery es la separación entre almacenamiento y procesamiento, lo que permite que ambos componentes escalen de forma independiente. Esto es clave para lograr flexibilidad operativa, reducir cuellos de botella y optimizar recursos según la carga de trabajo.
La arquitectura también garantiza alta disponibilidad y tolerancia a fallos, asegurando la continuidad del servicio incluso ante eventos imprevistos. Las consultas se ejecutan a través de una red de petabits, lo que permite una transferencia de datos extremadamente rápida entre el motor de cómputo y el almacenamiento.
Por otro lado, otro componente relevante es el distributed memory shuffle, un proceso mediante el cual los datos se reorganizan entre nodos; por ejemplo, durante operaciones como join o group by, para facilitar cálculos distribuidos posteriores. Esto permite que consultas complejas se dividan entre múltiples nodos, cada uno procesando una porción en paralelo, lo que reduce significativamente los tiempos de respuesta. Para ejemplificar, en un análisis de ventas por región, cada nodo puede procesar su segmento local y luego consolidar los resultados de forma eficiente.
Respecto a la ingestión de datos, BigQuery admite dos modos principales:
- Batch loading: Ideal para cargas programadas o masivas, como lotes por hora o por día.
- Streaming ingestion: Diseñado para flujos de datos en tiempo real, mediante herramientas como Dataflow o Pub/Sub.
Esta arquitectura híbrida de ingestión, junto con el procesamiento distribuido y la escalabilidad automática, hace que BigQuery se adapte bien a escenarios diversos, desde análisis históricos hasta monitoreo en tiempo real.
Formato Capacitor
Para lograr un rendimiento óptimo en consultas a gran escala, BigQuery utiliza Capacitor, un formato de almacenamiento columnar diseñado específicamente para su motor. A diferencia del almacenamiento por filas, Capacitor permite acceder solo a las columnas necesarias, lo que reduce tiempos de lectura y mejora la eficiencia.
Además, incorpora técnicas de compresión, uso de metadatos y estructuras jerárquicas que optimizan tanto el espacio como la velocidad de procesamiento.
En un ejemplo con datos de ventas, tradicionalmente estos se almacenan por filas.
[Fecha: 2024-01-01, Producto: A, Ventas: 100]
[Fecha: 2024-02-01, Producto: B, Ventas: 200]
[Fecha: 2024-03-01, Producto: C, Ventas: 300]
…
¿Qué problema podemos encontrar con esto? Si se quisiera calcular la suma de todas las ventas, se tendría que recorrer fila por fila y no sería óptimo.
El formato columnar (Capacitor) viene a solucionar esto almacenando los datos de la siguiente forma:
Fecha [2024-01-01, 2024-02-01, 2024-03-01, …]
Producto [A, B, C, …]
Ventas [100, 200, 300, …]
¿Cuál es el beneficio? Para calcular la suma de ventas solo se leerá únicamente la columna de ventas.
El formato Capacitor también ofrece otras características como:
Comprensión avanzada:
- Codificación de diccionario: Los valores repetidos se reemplazan por valores numéricos.
- Run-Length Encoding (RLE): Secuencia de valores idénticos se comprimen en valor + contador.
- Compresión general: Con algoritmos como Snappy o ZSTD para reducir tamaño en disco.
Metadatos jerárquicos
- Estadísticas: min, max, count y sum de los valores en bloque
- Índices: Para saltar rápidamente a bloques relevantes
Organización en árbol
- Se estructuran en una jerarquía de segmentos y páginas para permitir acceso paralelo y distribuido.
Motor Dremel
En el núcleo del procesamiento de BigQuery se encuentra Dremel, el motor que permite ejecutar consultas SQL sobre volúmenes masivos de datos en segundos. Su arquitectura distribuida y jerárquica está diseñada para escalar horizontalmente, procesando datos en paralelo a través de miles de nodos.
Este procesamiento se basa en 3 niveles:
- Root Server: Recibe la consulta, genera el plan de ejecución y coordina la distribución de tareas.
- Mixers: Combinan resultados parciales provenientes de los nodos de ejecución.
- Leaf Workers: Ejecutan operaciones directamente sobre los bloques de datos almacenados en formato Capacitor.
Las optimizaciones clave que realiza el motor Dremel son las siguientes:
- Dynamic Slot Allocation: Asigna slots automáticamente si la consulta es compleja (Por ejemplo, JOINS grandes).
- Columnar Shuffling: Durante operaciones como GROUP BY, solo transfiere las columnas necesarias entre nodos.
- Push-down de filtros: Aplica WHERE y LIMIT directamente a los leaf workers, reduciendo datos transferidos.
Estas características hacen de Dremel una solución eficiente para procesar consultas analíticas de gran escala, manteniendo un rendimiento constante incluso bajo cargas variables.
BigQuery ML
Además de su capacidad para ejecutar consultas analíticas a gran escala, BigQuery también permite construir modelos de machine learning directamente desde SQL mediante BigQuery ML. Esta funcionalidad reduce las barreras de entrada para equipos que ya trabajan con datos pero no necesariamente dominan lenguajes como Python o R. La ventaja es que es fácil de usar para analistas que ya conocen SQL. Soporta modelos como regresión, clasificación, clustering, forecasting, redes neuronales, etc.
Una vez entrenado el modelo se puede evaluar y hacer predicciones.
BigQuery ML permite incorporar capacidades de machine learning directamente en los flujos de análisis de datos sin necesidad de herramientas externas ni infraestructura adicional. Esta integración facilita la experimentación rápida, la validación de hipótesis y la entrega de valor predictivo en etapas tempranas de un proyecto, lo que resulta especialmente útil en contextos donde el tiempo y la agilidad son factores clave.
BigQuery y Notus
En Notus, evaluamos constantemente tecnologías que nos permitan abordar con eficiencia los desafíos asociados al análisis de grandes volúmenes de datos. BigQuery es una de las herramientas que consideramos especialmente adecuadas para ciertos tipos de proyectos, gracias a su capacidad para escalar automáticamente, ejecutar consultas complejas en tiempos reducidos y simplificar la gestión de infraestructura.
Este tipo de soluciones resulta especialmente relevante para industrias como la financiera o el retail, donde pueden presentarse necesidades de procesamiento intensivo, análisis en tiempo real o respuesta ágil ante eventos masivos como promociones o detección de anomalías. También abre posibilidades en áreas como la salud, telecomunicaciones o manufactura, donde integrar capacidades de machine learning directamente en el flujo de análisis podría acelerar el desarrollo de modelos predictivos.
Contar con el conocimiento profundo de herramientas como BigQuery nos permite diseñar soluciones escalables, eficientes y alineadas a los objetivos de cada cliente.
Potencial de BigQuery
En Notus, valoramos este tipo de herramientas no solo por su rendimiento, sino por cómo se integran en flujos de trabajo reales y permiten responder a los desafíos específicos de cada industria. La posibilidad de aplicar modelos de machine learning directamente desde SQL es un ejemplo de cómo BigQuery puede acelerar procesos de exploración y validación en etapas tempranas de proyectos analíticos.
Más allá de la herramienta, lo fundamental es contar con la capacidad de entender cuándo usarla, cómo combinarla con otras tecnologías y cómo diseñar soluciones a partir de ella. Si estás explorando cómo escalar tus procesos de análisis de datos o necesitas evaluar herramientas que se ajusten a los desafíos específicos de tu organización, en Notus podemos ayudarte a pensar estratégicamente la solución. Conversemos.
Bibliografía
- https://cloud.google.com/bigquery/docs/storage_overview?hl=es-419
- https://cloud.google.com/bigquery/pricing?hl=es
- https://cloud.google.com/blog/products/bigquery/inside-capacitor-bigquerys-next-generation-columnar-storage-format?hl=en
- https://research.google/pubs/dremel-interactive-analysis-of-web-scale-datasets-2/
- https://research.google/pubs/storing-and-querying-tree-structured-records-in-dremel/
- https://cloud.google.com/bigquery/docs/create-machine-learning-model?hl=es-419