📊

Diseño de data warehouses en BigQuery

Jul 4, 2024

Diseño de Data Warehouses en BigQuery

Introducción

  • Tema: Diseño de data warehouses en BigQuery
  • Diferencias con el pasado: Comparación con el diseño de data warehouses hace 20 años.
  • Enfoque: Características de BigQuery que lo hacen eficiente, rápido y de alto rendimiento.
  • Tipo de discusión: Arquitectura (no se verán muchos visuales o comandos).

Tipos de Opciones de Almacenamiento de Datos

  1. Bases de datos relacionales (relational)
    • Estructuradas y utilizadas para sistemas de procesamiento de transacciones.
    • Dificultades para escalar.
  2. NoSQL
    • Emergieron ante la dificultad de escalar bases de datos relacionales.
    • Trabajan bien con datos semi-estructurados.
    • Replicación de datos no necesita ser inmediatamente consistente.
  3. Bases de datos analíticas
    • Diseñadas para ser altamente escalables.
    • Sacrifican algunas capacidades transaccionales.

Qué Hace Diferente a BigQuery

  • Diseño: Data warehouse sin servidor diseñado para petabytes desde el inicio.
  • SQL: Usa SQL pero no es una base de datos relacional.
  • Características interesantes:
    • BigQuery ML (Machine Learning dentro de BigQuery).
    • BI Engine (OLAP en memoria para operaciones de baja latencia).
    • BigQuery GIS (sistemas geográficos).

Arquitectura de BigQuery

  1. Colossus
    • Sistema global de almacenamiento de datos.
    • Utilizado por múltiples sistemas como BigTable y Spanner.
  2. Jupiter Project
    • Conmutadores de red (networking switches) propietarios de Google.
    • Red Petabit de alto rendimiento.
  3. Dremel
    • Sistema de software que gestiona clústeres de servidores y ejecuta consultas SQL.
    • Usa árboles de ejecución y nodos internos para la agregación de datos.
  4. Borg
    • Predecesor de Kubernetes.
    • Responsable de gestionar recursos y trabajos.

Componentes Importantes

  • Dremel
    • Clúster multi-tenant sin aislamiento físico.
    • Divide las consultas SQL en árboles de ejecución.
  • Slots
    • Unidades de procesamiento que leen datos.
    • Asignación dinámica para mantener equidad en el uso de recursos.
  • Capacitor
    • Formato de almacenamiento en columnas diseñado para datos semi-estructurados.
    • Soporta estructuras anidadas y campos repetidos.

Implicaciones para el Diseño de Modelo de Datos

  • Escaneo: BigQuery escanea datos en lugar de utilizar índices.
  • Cobranza por datos escaneados: Google cobra por la cantidad de datos escaneados.
  • Particionamiento: Divide grandes tablas en partes más pequeñas para reducir el escaneo.
  • Tablas Clusterizadas: Ordena los datos dentro de las particiones para mejorar la eficiencia.
  • Denormalización: Uso de campos anidados y repetidos para evitar joins innecesarios.

Detalles Adicionales

  • Tipos de Particionamiento:
    • Por tiempo de ingestión: Basado en el tiempo de carga de datos.
    • Por marca de tiempo: Basado en una columna de marca de tiempo existente.
    • Por rango de enteros: Basado en una columna de enteros.
  • Shardings vs Particionamiento: El particionamiento es preferido sobre sharding por mejor rendimiento y menor sobrecarga de mantenimiento.
  • Requerimiento de Particionado: Parámetro que asegura que las consultas incluyan la columna de partición en el WHERE clause.

Conclusión

  • BigQuery: Fundamental pensar en minimizar el escaneo de datos.
  • Optimización: Uso de mejores prácticas como particionar, clusterizar y denormalizar datos.

Preguntas y respuestas: (No incluidas en la transcripción)