Architecture et Facturation BigQuery

Comprendre l'architecture de BigQuery est essentiel pour optimiser les coûts. BigQuery sépare le compute du storage, ce qui a des implications directes sur la facturation.

Architecture Dremel

BigQuery est basé sur Dremel, le moteur de requêtes massively parallel de Google. Voici les composants clés :

┌─────────────────────────────────────────────────────────────┐
│                      BigQuery                                │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │   Dremel    │  │   Dremel    │  │   Dremel    │          │
│  │   (Query)   │  │   (Query)   │  │   (Query)   │  COMPUTE │
│  │   Workers   │  │   Workers   │  │   Workers   │  (Slots) │
│  └─────────────┘  └─────────────┘  └─────────────┘          │
├─────────────────────────────────────────────────────────────┤
│                     Colossus                                 │
│              (Distributed Storage)                STORAGE    │
│                                                              │
└─────────────────────────────────────────────────────────────┘
  • Compute (Slots) : Unités de calcul pour exécuter les requêtes. C'est ce que vous payez en on-demand ou flat-rate.
  • Storage (Colossus) : Stockage distribué des données en format columnar. Payé au GB/mois.
  • Séparation compute/storage : Vous pouvez scaler l'un sans l'autre.

A retenir

La separation compute/storage signifie que vous pouvez stocker des petabytes sans payer de compute, et inversement. Ne confondez pas les deux lignes de facturation.

On-demand : $5 par TB scanné

Le mode par défaut. Vous payez uniquement pour les données scannées par vos requêtes.

Note

$5.00 / TB

Minimum facturé : 10 MB par requête

-- Exemple : requête sur table de 500 GB
SELECT customer_id, SUM(amount) as total
FROM `project.dataset.transactions`
WHERE date BETWEEN '2024-01-01' AND '2024-12-31'
GROUP BY customer_id;

-- Bytes scannés : 500 GB (toute la table)
-- Coût : 0.5 TB × $5 = $2.50

Attention

Attention : BigQuery facture les bytes scannés, pas les bytes retournés. Une requête qui retourne 10 lignes peut scanner des TB.

Ce qui compte dans le calcul

ElémentFacturé ?Notes
Colonnes sélectionnéesOuiSeules les colonnes dans SELECT et WHERE
Partitions scannéesOuiPartition pruning réduit le coût
Résultats en cacheNonCache hit = 0 bytes facturés
Dry runNonEstimation gratuite

Flat-rate : BigQuery Editions

Au lieu de payer au TB, vous achetez de la capacité de calcul (slots).

Edition$/slot-hourFonctionnalités
Standard$0.04Base, pas de SLA
Enterprise$0.06SLA 99.99%, CMEK, VPC-SC
Enterprise Plus$0.10+ Failover, cross-region

Calcul du break-even

-- Exemple : 100 slots Enterprise
Coût mensuel = 100 slots × $0.06 × 730 heures = $4,380

-- Break-even en TB
$4,380 / $5 par TB = 876 TB/mois

-- Si vous scannez > 876 TB/mois, le flat-rate est rentable

Decision concrete

Calculez vos TB scannes sur les 3 derniers mois avant de passer en flat-rate. Si vous etes en dessous de 800 TB/mois, restez en on-demand. Au-dessus de 1000 TB/mois, passez en flat-rate.

Storage pricing

TypePrixCondition
Active storage$0.02/GB/moisDonnées modifiées dans les 90 jours
Long-term storage$0.01/GB/moisDonnées non modifiées depuis 90+ jours

La bascule vers long-term storage est automatique. Pas d'action requise.

Streaming inserts

Attention

Coût : $0.01 par 200 MB insérés (soit $50 par TB)

Le streaming est 10x plus cher que le batch loading (gratuit). A utiliser uniquement quand la latence est critique.

Erreur frequente

Beaucoup d'equipes utilisent le streaming par defaut alors qu'un batch toutes les 5 minutes suffirait. Le streaming coute $50/TB contre $0 pour le batch. Posez-vous la question : avez-vous vraiment besoin de donnees en temps reel ?
# Alternatives au streaming
# 1. Batch load (gratuit)
bq load --source_format=NEWLINE_DELIMITED_JSON dataset.table gs://bucket/data.json

# 2. Storage Write API (moins cher que streaming legacy)
# $0.025 par GB (moitié du streaming classique)
Jonathan Kini

Jonathan Kini

J'aide les équipes data à réduire et maîtriser leurs coûts BigQuery et Snowflake, sans sacrifier la performance. 8 ans de terrain, de la startup aux environnements data à grande échelle.