Tema 7 de 11
La otra mitad de los productos de datos del temario: el almacén analítico (BigQuery), la mensajería (Pub/Sub y Google Cloud Managed Service for Apache Kafka) y el procesamiento de flujos (Dataflow). El temario también pide saber cargar datos, incluida la carga desde Cloud Storage, y mantener la redundancia multirregional.
Contenido
Plataforma de datos totalmente gestionada y serverless para gestionar y analizar datos con SQL y Python, sin infraestructura. Consulta terabytes en segundos y petabytes en minutos.
bq, bibliotecas de cliente, API REST y RPC, y controladores ODBC y JDBC.Región
Un lugar concreto, como Londres (europe-west2).
Multirregión
Un área grande, como Estados Unidos (US) o Europa (EU). Puede dar cuotas mayores.
Una multirregión no es redundancia entre regiones
En cualquier tipo de ubicación, BigQuery guarda copias de los datos en dos zonas de una sola región. Una multirregión no añade redundancia regional: los datos se guardan en una región y el cómputo solo se da en ella. Para redundancia entre regiones, BigQuery ofrece recuperación ante desastres gestionada.
La ubicación se elige al crear el dataset y determina dónde se almacenan y procesan los datos, así como el precio.
| Método | Cuándo |
|---|---|
| Carga por lotes | Grandes volúmenes desde archivos locales o Cloud Storage: Avro, Parquet, ORC, CSV, JSON, exportaciones de Datastore y Firestore. Para cargas programadas o incrementales, Google recomienda BigQuery Data Transfer Service |
| Streaming | Datos casi en tiempo real: una suscripción de BigQuery en Pub/Sub o la Storage Write API |
| Change Data Capture | Datastream replica los cambios de filas de una base de datos a BigQuery |
| Federación | Consultar datos externos sin cargarlos |
# Cargar un CSV desde Cloud Storage con un esquema bq load --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv ./myschema.json # Comodines en el URI de Cloud Storage bq load --source_format=CSV --autodetect mydataset.mytable "gs://mybucket/fed-*/temp/*.csv"
La detección automática de esquema no detecta encabezados si todas las columnas son de tipo string. La carga de un archivo local también se hace con bq load.
Bajo demanda (por TiB)
Por capacidad (por slot-hora)
El almacenamiento se cobra aparte: los primeros 10 GiB al mes son gratis, y las tablas o particiones que no se modifican durante 90 días consecutivos pasan a almacenamiento a largo plazo, más barato. La estimación de costes se ve en el dominio D3.
Servicio de mensajería asíncrono y escalable que desacopla los servicios que producen mensajes de los que los procesan, con latencias típicas de unos 100 milisegundos. Los publicadores envían mensajes a un tema y los suscriptores los reciben a través de suscripciones.
Ingesta de eventos
Eventos de apps o servidores que Dataflow lleva a BigQuery, Bigtable o Cloud Storage.
Distribución en tiempo real
Bus de eventos empresarial que comparten varios equipos.
Replicación entre bases de datos
Distribuir eventos de cambio de una base de datos.
Procesamiento paralelo
Repartir tareas entre muchos workers, por ejemplo redimensionar imágenes.
| Tipo | Cómo funciona |
|---|---|
| Pull | El cliente suscriptor pide los mensajes al servidor |
| Push | Pub/Sub envía cada mensaje a un endpoint HTTP del suscriptor (por ejemplo, Cloud Run) |
| Exportación | Escribe los mensajes directamente en BigQuery, Cloud Storage o Bigtable (esta última en vista previa) |
ackDeadline; si no, se vuelve a entregar.gcloud pubsub topics create orders gcloud pubsub subscriptions create orders-sub --topic=orders gcloud pubsub topics publish orders --message="hello" gcloud pubsub subscriptions pull orders-sub --auto-ack
Procesamiento de datos por lotes y en streaming con el mismo modelo de programación. Las pipelines leen de uno o varios orígenes, transforman los datos y los escriben en un destino.
Servicio de Google Cloud para ejecutar clústeres de Apache Kafka de código abierto, seguros y escalables.
Dimensionado
Indicas vCPU y memoria totales; el servicio aprovisiona los brokers y reequilibra las particiones al escalar.
Almacenamiento por niveles
Disco local rápido limitado más almacenamiento remoto prácticamente ilimitado y barato. Tú fijas la retención de cada tema.
Red
Accesible desde varias VPC, proyectos y regiones mediante Private Service Connect, con una única URL de bootstrap.
Seguridad
Autenticación SASL (con identidades IAM) o mTLS, TLS obligatorio, cifrado en reposo con claves de Google o CMEK, parches automáticos.
No admite conexiones sin autenticar ni sin cifrar. La autorización combina IAM (gestión del clúster) y ACL de Kafka.
| Pub/Sub | Managed Service for Apache Kafka | |
|---|---|---|
| Modelo | Serverless, sin clúster que dimensionar | Clúster de Kafka que dimensionas por vCPU y memoria |
| Paralelismo | Por mensaje | Por partición |
| Cuándo | Integración nativa con Google Cloud, eventos y streaming sin gestionar infraestructura | Aplicaciones y herramientas que ya usan la API de Kafka |
| Situación | Respuesta | Por qué |
|---|---|---|
| Analizar petabytes con SQL sin gestionar servidores | BigQuery | Almacén de datos serverless. |
| Cargar cada noche archivos CSV de un bucket en BigQuery de forma programada | BigQuery Data Transfer Service | Programa trabajos de carga recurrentes. |
| Meter en BigQuery en tiempo casi real los eventos de un tema | Suscripción de BigQuery en Pub/Sub | Exporta los mensajes directamente a una tabla. |
| Replicar cambios de una base de datos MySQL a BigQuery | Datastream (CDC) | Replica cambios a nivel de fila. |
| Desacoplar un servicio que produce pedidos del que los procesa | Pub/Sub | Mensajería asíncrona. |
| Transformar y enriquecer un flujo de eventos antes de guardarlo en BigQuery | Dataflow | Procesamiento por lotes y en streaming con Apache Beam. |
| Migrar aplicaciones que ya usan clientes de Apache Kafka | Managed Service for Apache Kafka | Kafka gestionado y compatible. |
| Costes de consulta previsibles en BigQuery para un equipo grande | Precio por capacidad (reservas de slots) | Se paga por slot-hora, con compromisos opcionales. |
❓ ¿Un dataset en la multirregión US está protegido si cae una región?
No. Los datos se guardan en dos zonas de una sola región. Para redundancia entre regiones hay que usar la recuperación ante desastres gestionada.
❓ ¿Una suscripción nueva recibe los mensajes publicados antes de crearla?
No. Solo los posteriores, salvo que uses la retención del tema y la reproducción de mensajes.
❓ ¿Pub/Sub garantiza por defecto el orden y la entrega única?
No. Por defecto es al menos una vez y sin orden; ambas cosas se pueden activar.
❓ ¿Hay que gestionar VM para ejecutar Dataflow?
No. Dataflow asigna los workers y los borra al terminar el trabajo.
❓ ¿Qué SDK usa Dataflow?
Apache Beam, en Java, Python o Go.
❓ ¿Cuándo pasa una tabla de BigQuery a almacenamiento a largo plazo?
Cuando no se modifica durante 90 días consecutivos.
¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
Una app publica millones de eventos de clics por hora. Hay que limpiarlos, enriquecerlos con datos de usuario y guardarlos en BigQuery en tiempo casi real, sin gestionar servidores. ¿Qué arquitectura elige?
Preguntas originales, cada una con su explicación.
Empezar un simulacro