BigQuery on-demand vs reservas (slots)
En Google BigQuery, los costos de procesamiento de consultas se pueden gestionar mediante dos modelos principales:
- On-demand (pago por uso)
- Capacidad reservada / slots (flat-rate / modelo de capacidad)
Ambos modelos usan el concepto de slots (unidades virtuales de cómputo), pero difieren en cómo se cobran, se asignan y se gestionan las cargas de trabajo. A continuación se explica con detalle cada modelo, comparación, ventajas / desventajas y escenarios recomendados.
¿Qué es un “slot” en BigQuery?
Un slot en BigQuery es una unidad de capacidad virtual (mezcla de CPU, memoria y recursos asociados) utilizada para ejecutar partes del plan de consulta (etapas). Durante la ejecución de una consulta, BigQuery asigna dinámicamente una cantidad de slots según el tamaño, complejidad y concurrencia del trabajo.
Al decidir entre on-demand y capacidad reservada, se trata de definir cómo se paga por el uso de estos slots y cuánto control tienes sobre su asignación.
Modelo on-demand (pago por uso)
Descripción y mecanismo
- En el modelo on-demand, pagas por la cantidad de datos escaneados (en TiB) por cada consulta.
- BigQuery asigna slots dinámicamente, dentro de ciertos límites, para ejecutar consultas. Con este modelo se comparte la capacidad de slots entre todas las consultas de un proyecto.
- Por defecto, el proyecto tiene acceso a hasta 2 000 slots concurrentes para consultas on-demand, con capacidad de “burst” temporal si la carga lo requiere (siempre que haya disponibilidad).
- Si la demanda excede la capacidad de slots disponibles, las unidades de trabajo se encolan hasta que haya recursos disponibles.
Ventajas
- Simplicidad y flexibilidad: No necesitas gestionar reservas ni compromisos por adelantado.
- Costos proporcionales al uso: Solo se paga por lo que realmente se procesó (datos escaneados).
- Escalado automático: Los recursos se asignan bajo demanda acorde con la carga de consultas.
- Ideal para cargas variables: Si tu uso es intermitente o impredecible, este modelo puede ser más eficiente.
Desventajas / limitaciones
- Límites de slots: Si muchas consultas pesadas se ejecutan simultáneamente, podrías alcanzar el límite de 2 000 slots lo que puede degradar el rendimiento (colas).
- Costo impredecible: En escenarios de uso intensivo y constante, los costos pueden aumentar significativamente.
- Menor control sobre recursos: No puedes reservar capacidad específica para un proyecto o carga crítica.
- Latencias variables: En momentos de alta demanda de BigQuery en esa región, el servicio podría provisionar menos recursos según disponibilidad compartida.
Modelo de capacidad reservada (slots / flat-rate / reservas)
Descripción y mecanismo
- En este modelo tú comprometes una cantidad de slots de forma anticipada (en forma de reservas o compromisos) y pagas por ellos (por hora o con compromisos a largo plazo).
- Con reservas, creas pools de slots (reservations) y asignas proyectos, carpetas u organizaciones a esos pools.
- Puedes configurar una cantidad base de slots (baseline) y opcionalmente autoscaling para permitir que la reserva crezca temporalmente si la demanda lo requiere, hasta un máximo definido.
- Si la demanda de consultas excede los slots disponibles en una reserva asignada, las unidades de trabajo se pondrán en cola (no se facturan slots extras).
- Puedes aislar cargas de trabajo (por ejemplo producción versus pruebas) creando reservas separadas, evitando la competencia entre ellas.
Ventajas
- Previsibilidad de costos: Pagas una tarifa fija (o compromiso) por la capacidad reservada, independientemente del volumen de consultas.
- Garantía de recursos: Los proyectos asignados a la reserva tienen acceso garantizado a esa capacidad.
- Aislamiento de cargas de trabajo: Puedes evitar que consultas de bajo nivel compitan contra cargas críticas.
- Optimización de rendimiento: Para cargas consistentes y pesadas, puede resultar más rentable que pagar por uso.
- Capacidad de autoscaling: Permite adaptarse a picos de demanda sin tener que adquirir exceso de capacidad permanente.
Desventajas / retos
- Compromiso anticipado: Si reservas demasiada capacidad que no se usa, tendrás slots ociosos pagos.
- Necesidad de estimación: Debes calcular cuántos slots reservar, lo cual puede ser complejo.
- Menos flexibilidad para cargas muy variables: Si tus cargas fluctúan mucho, puede que pagues por capacidad que no utilizas.
- Gestión adicional: Requiere configurar reservas, asignaciones y monitoreo de uso de slots.
- Encolamiento si se sobrepasa la reserva: Si tu demanda supera la capacidad reservada, las consultas esperarán hasta que haya slots libres.
Comparación resumida
Criterio
On-demand
Capacidad reservada / slots
Costeo
Por TB procesado
Por hora / compromiso de slots
Control sobre recursos
Bajo (BigQuery asigna dinámicamente)
Alto (reservas dedicadas)
Previsibilidad de costos
Baja en cargas intensivas
Alta si la carga es estable
Escalabilidad ante picos
Automática (dentro de límites)
Autoscaling opcional (si configurado)
Adecuado para
cargas variables, uso ocasional
cargas consistentes y predecibles
Riesgo de recurso ocioso
Bajo
Si reservas más de lo que necesitas
Gestión operativa
Mínima
Requiere configuración de reservas y asignaciones
Casos de uso recomendados
On-demand
- Proyectos exploratorios, pruebas y desarrollo donde el uso de consultas no está establecido o es esporádico.
- Organizaciones que quieren minimizar el mantenimiento operativo y pagar estrictamente por uso.
- Cargas intermitentes que no justifican un compromiso fijo de recursos.
- Etapas iniciales antes de escalar a un compromiso más formal.
Capacidad reservada / slots
- Entornos de producción con consultas constantes, dashboards y BI críticos que requieren garantía de rendimiento.
- Organizaciones que desean presupuestos previsibles mensuales para BigQuery.
- Escenarios donde es necesario aislar cargas de trabajo (por ejemplo separar ambiente de pruebas de producción).
- Cargas con patrones estables y predecibles en volumen de datos.
- Cuando se requiere optimización de costos para consultas frecuentes de gran volumen.
- Proyectos con grandes volúmenes de datos que podrían superar los límites de slots en modelo on-demand.
Un caso concreto: si tu uso en un mes con on-demand resulta muy alto recurrentemente, puede ser más eficiente migrar a una reserva de slots, ya que podrías “romper el punto de equilibrio” entre pago por uso y costo fijo de slots.
Buenas prácticas y recomendaciones
- Monitorea el uso de slots y bytes procesados mediante métricas de BigQuery y Cloud Monitoring.
- Realiza pruebas comparativas entre modelos (on-demand vs capacidad reservada) con tu carga real de datos.
- Empieza con on-demand, y si los costos mensuales son altos o muy variables, considera migrar a capacidad reservada.
- Si usas reservas, asigna proyectos de producción a reservas dedicadas para evitar contención.
- Aprovecha las reservas con autoscaling para manejar picos temporales sin sobredimensionar permanentemente.
- Ajusta las reservas periódicamente según crecimiento del negocio o patrones de consulta.
- Usa asignaciones cuidadosas de trabajos (por tipo: consultas, pipelines, etc.) para optimizar uso de reservas.