BIGQUERY
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
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.50Attention
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ément | Facturé ? | Notes |
|---|---|---|
| Colonnes sélectionnées | Oui | Seules les colonnes dans SELECT et WHERE |
| Partitions scannées | Oui | Partition pruning réduit le coût |
| Résultats en cache | Non | Cache hit = 0 bytes facturés |
| Dry run | Non | Estimation gratuite |
Flat-rate : BigQuery Editions
Au lieu de payer au TB, vous achetez de la capacité de calcul (slots).
| Edition | $/slot-hour | Fonctionnalités |
|---|---|---|
| Standard | $0.04 | Base, pas de SLA |
| Enterprise | $0.06 | SLA 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 rentableDecision concrete
Storage pricing
| Type | Prix | Condition |
|---|---|---|
| Active storage | $0.02/GB/mois | Données modifiées dans les 90 jours |
| Long-term storage | $0.01/GB/mois | Donné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
# 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)