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
- Bases de datos relacionales (relational)
- Estructuradas y utilizadas para sistemas de procesamiento de transacciones.
- Dificultades para escalar.
- 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.
- 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
- Colossus
- Sistema global de almacenamiento de datos.
- Utilizado por múltiples sistemas como BigTable y Spanner.
- Jupiter Project
- Conmutadores de red (networking switches) propietarios de Google.
- Red Petabit de alto rendimiento.
- 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.
- 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)