Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

đŸ—„ïž Bases de DonnĂ©es — concepts, modĂšles, SQL/NoSQL, transactions, index, perf, rĂ©plication & ops

Une base de donnĂ©es est un systĂšme de stockage et de requĂȘtage qui garantit (Ă  divers degrĂ©s) : durabilitĂ©, cohĂ©rence, concurrence, performance et sĂ©curitĂ©. On choisit une BD en fonction du modĂšle de donnĂ©es, du workload (OLTP/OLAP), des contraintes (latence, dispo, conformitĂ©) et du budget opĂ©rationnel (backup, upgrades, rĂ©plication, tuning).

1.1

Définition & taxonomie

DBMS, schéma, tables/collections, transactions. OLTP vs OLAP. Row-store vs column-store. ACID vs BASE.

OLTPOLAPACID

ModÚles de données

Relationnel, document, key-value, wide-column, graph, time-series, search. Quand choisir quoi.

RelationalDocumentGraph

SQL & conception

SchĂ©ma, normalisation, contraintes, clĂ©s, types, relations, ORM, migrations. ModĂ©liser pour requĂȘter.

SchemaConstraintsORM
1.2

Transactions & concurrence

ACID, isolation, verrous, MVCC, deadlocks, phénomÚnes (dirty read, phantom), 2PL vs MVCC.

MVCCLocksDeadlocks

Index & structures

B-Tree, Hash, GIN/GiST, bitmap, covering index. Cardinalité, sélectivité, coût write vs read.

B-TreeGINCovering

Optimizer & plans

Explain plan, statistics, join order, scans, sorts, cost model. Pourquoi une requĂȘte “tombe”.

EXPLAINStatsJoins

Stockage, WAL & recovery

Pages, buffers, redo/undo, WAL/redo log, checkpoints, crash recovery, corruption, fsync, I/O patterns.

WALCheckpointRecovery

Réplication & HA

Sync vs async, RPO/RTO, failover, quorum, split brain. Read replicas, sharding, multi-region.

RPO/RTOFailoverQuorum

Backup & restore

Full/incr, snapshots, PITR, logical vs physical, tests réguliers, runbooks, encryption, retention.

PITRSnapshotsRestore
2.1

Sécurité & compliance

AuthN/AuthZ, RBAC, chiffrement, secrets, audit, masking, least privilege. Multi-tenant, GDPR.

RBACEncryptionAudit

Ops, perf & tuning

Monitoring, capacity, autovacuum/bloat, cache hit ratio, connection pools, slow queries, SLO.

MonitoringTuningSLO
★

Cheat-sheet “DBA / backend”

RĂšgles d’or, index, transactions, plans, rĂ©plication, backup, anti-patterns, checklist incident.

ChecklistIncidentAnti-patterns
Bases de donnĂ©es — overview densifiĂ© (dĂ©cider, concevoir, opĂ©rer)
Mental model : “modùle + workload + garanties + ops”
1) ModĂšletables / docs / graph / kv / time-series
2) WorkloadOLTP (writes) vs OLAP (reads/aggreg)
3) GarantiesACID, isolation, durabilité, contraintes
4) Perfindex, cache, I/O, planificateur
5) HAréplication, failover, multi-AZ/region
6) Opsbackup, upgrade, monitoring, security
OLTP vs OLAP (problĂšme #1 des systĂšmes)
DimensionOLTPOLAP
Usagetransactions courtesrequĂȘtes longues, scans
ModÚlenormalisédé-normalisé, star schema
Stockagerow-storesouvent column-store
Indexsélectifspartitioning + column pruning
3 axes décisionnels (pratiques)

1) Cohérence vs disponibilité (CAP)
En rĂ©seau partitionnĂ© : tu dois choisir “C” ou “A” en pratique (et contrĂŽler le comportement).

2) Perf reads vs writes
Index accélÚre read, ralentit write. Constraints protÚgent, mais coûtent.

3) Ops & fiabilité
Une BD “facile” = backup/restore testĂ©s + monitoring + upgrades + runbooks.

Rùgle d’or
La plupart des pannes/perfs viennent de :
- mauvais modĂšle / requĂȘtes non indexĂ©es
- stats/planificateur
- contention (locks) / saturation I/O
- absence de plan backup/restore
- réplication mal comprise (RPO/RTO)
          
DĂ©finition & taxonomie — DBMS, OLTP/OLAP, row/column, ACID/BASE, CAP
Qu’est-ce qu’un DBMS ?

Un DBMS est un moteur qui gĂšre : stockage (pages/fichiers), concurrence (locks/MVCC), rĂ©cupĂ©ration (WAL/redo), requĂȘtage (optimizer), sĂ©curitĂ© (auth/RBAC) et outils d’exploitation.

Row-store

Optimisé OLTP : écrire/lire une ligne complÚte vite (PostgreSQL, MySQL, Oracle
)

Column-store

Optimisé OLAP : lire seulement les colonnes nécessaires (BigQuery, ClickHouse, Snowflake
)

ACID (et pourquoi c’est important)
PropriétéIdéeExemple
Atomicitytout ou rientransaction rollback
Consistencyinvariants respectésconstraints
Isolationtransactions “comme seules”levels
DurabilitypersistĂ© mĂȘme crashWAL + fsync

Beaucoup de systùmes NoSQL se rapprochent d’ACID aujourd’hui, mais pas toujours partout (multi-doc, cross-partition
).

CAP (version utile)
Si partition réseau :
- C (consistency) ou A (availability) : tu choisis comportement
En pratique :
- CP : préfÚre cohérence (peut refuser)
- AP : préfÚre disponibilité (cohérence éventuelle)
        
OLTP vs OLAP : ne pas mélanger sans précautions
OLTP : petits writes/reads, beaucoup de connexions, index + contention
OLAP : scans, aggregations, partitions, columnar, compression

Mix :
- réplicas dédiés
- ETL vers warehouse
- workload management
        
ModĂšles de donnĂ©es — relationnel, document, key-value, wide-column, graph, time-series, search
Comparatif “quand choisir quoi”
ModĂšleForcesFaiblessesQuand
Relationneltransactions, joins, contraintesscale horizontal plus complexeOLTP métier
Documentschéma flexible, objets imbriquésjoins limitéspayloads, CMS
Key-Valuelatence trĂšs basserequĂȘtes limitĂ©escache, sessions
Wide-columnscale massif, write heavymodélisation stricte par accÚsevents, logs
Graphrelations complexesperf dépend modÚlefraude, réseau
Time-seriesingest + agrégations tempspas généralistemetrics/IoT
Searchfull-text + rankingconsistance différenterecherche

Le bon modĂšle = celui qui colle au pattern d’accĂšs (requĂȘtes). Beaucoup d’échecs viennent d’un modĂšle choisi “à la mode”.

Relationnel : pourquoi ça reste dominant
- schéma explicite
- contraintes (PK/FK/unique/check)
- transactions + isolation
- optimizer mature
- reporting + SQL universel
        
Document : flexibilité
- documents JSON (collections)
- index sur champs
- atomicité souvent par document
- bon pour structures imbriquées
Risques :
- schĂ©ma “cachĂ©â€ => dette
- duplication => incohérences
        
SpĂ©cialisĂ©es : “le bon outil au bon endroit”
Key-Value : Redis-like (cache)
Search : Elastic-like (full text)
Time-series : Influx/Timescale-like (metrics)
Graph : Neo4j-like (relations)
Wide-column : Cassandra-like (scale)
        
SQL & conception — schĂ©ma, normalisation, contraintes, types, migrations, ORM
Concevoir un schĂ©ma : partir des requĂȘtes
Approche pragmatique :
1) lister les 10 requĂȘtes les plus frĂ©quentes/critique
2) modĂ©liser pour rendre ces requĂȘtes naturelles
3) ajouter contraintes + index
4) valider avec EXPLAIN + tests charge
        
Normalisation (résumé)
  • 1NF : valeurs atomiques.
  • 2NF : pas de dĂ©pendance partielle (clĂ© composite).
  • 3NF : pas de dĂ©pendance transitive.

En OLTP : normalisation aide la cohérence. En OLAP : dénormalisation améliore performance.

Contraintes : “payer un peu” pour Ă©viter le chaos
ContrainteButCoût
PK/Uniqueunicitéwrite
FKintégrité relationnellelocks/validation
CHECKrÚgles métiervalidation
ORM : productivité vs transparence
Avantages :
- productivité CRUD
- migrations + modĂšle unique
Risques :
- N+1 queries
- joins implicites
- mauvais plans invisibles
Pratiques :
- profiler SQL
- expliciter préfetch/join
- indexer selon requĂȘtes
        
Transactions & concurrence — isolation, verrous, MVCC, deadlocks, phĂ©nomĂšnes
Isolation levels (vision simple)
NiveauProtÚge contreCoût
Read Committeddirty readsfaible
Repeatable Readnon-repeatable readsplus
Serializablephantoms + anomaliesélevé (retries)
Locks : pourquoi ça bloque
Sources de contention :
- transactions longues
- scans + updates
- hotspots (mĂȘme row)
- index manquants sur FK
Solutions :
- réduire durée transactions
- indexer correctement
- partitioning, batching
        
MVCC : multi-version concurrency control
Idée :
- lecteurs ne bloquent pas écrivains (souvent)
- versions (tuples) -> nettoyage (vacuum)
Impacts :
- bloat si vacuum mal réglé
- visibilité via snapshots
        
Deadlocks : cercle d’attente
Pattern :
T1 lock(A) -> veut B
T2 lock(B) -> veut A
=> deadlock, un est tué
Prévention :
- ordre d'accĂšs stable
- transactions courtes
- index + éviter scans lockants
        
Index & structures — B-Tree, Hash, GIN/GiST, bitmap, covering, cardinalitĂ©
B-Tree : le standard OLTP
B-Tree :
- range queries (>, <, BETWEEN)
- tri (ORDER BY) si compatible
- index sur (a,b,c) utilisable par préfixe : a, (a,b), (a,b,c)
        
Cardinalité / sélectivité
Index utile si :
- filtre réduit fortement le résultat
- ou couvre ORDER BY / JOIN

Index peu utile si :
- colonne faible cardinalité (ex: bool)
=> sauf bitmap/partiel selon moteur
        
Covering index (include)
Idée :
- l'index contient toutes les colonnes nécessaires
=> éviter lookup table (heap fetch)
Gain :
- lectures I/O réduites
Coût :
- index plus gros, writes plus lents
        
Chaque index a un coût
ActionImpact
INSERTmaj de tous les index
UPDATEmaj index si colonnes concernées
DELETEtombstones/cleanup

Trop d’index = writes lents + vacuum/maintenance plus lourde.

Optimizer & plans — EXPLAIN, stats, scans, joins, sorts, coĂ»t
Lire un plan (méthode)
1) Identifier l'opération la plus coûteuse (scan/sort/hash)
2) Vérifier cardinalités estimées vs réelles (si dispo)
3) Vérifier accÚs : index scan vs seq scan
4) Regarder joins : nested loop / hash join / merge join
5) Corriger : index / stats / rewrite query
        
Statistics : le fuel de l’optimizer
Si stats fausses :
- mauvais join order
- mauvais choix index
Solutions :
- analyze/vacuum
- histogram/extended stats (selon moteur)
        
Joins : rĂšgles simples
JoinQuandPiĂšge
Nested looppetit × indexĂ©explose si gros
Hash joingros datasetsmémoire
Merge joindéjà triésort coûteux sinon
Anti-patterns requĂȘtes
  • SELECT * sur tables larges.
  • Fonctions sur colonnes indexĂ©es (empĂȘche usage index) : WHERE lower(email)=...
  • OR multiples sans index adaptĂ©s.
  • JOIN sans condition (cartĂ©sien involontaire).
  • N+1 queries (cĂŽtĂ© ORM).
Stockage, WAL & recovery — pages, buffers, redo/undo, checkpoints, fsync
WAL / redo log : la durabilité
Principe :
- écrire d'abord le log (WAL)
- appliquer ensuite aux pages data
Crash recovery :
- rejouer WAL -> état cohérent
Checkpoint :
- limite WAL Ă  rejouer
          

Les perfs write sont souvent limitĂ©es par WAL (fsync), pas par la table elle-mĂȘme.

Buffers & I/O pattern
- buffer cache : garder pages chaudes
- read-ahead : scans
- random I/O : index lookups
- sequential I/O : scans + backups
Tuning :
- mémoire, checkpoint, IO scheduler
- stockage : NVMe, RAID, SAN
          
RĂ©plication & HA — sync/async, RPO/RTO, failover, quorum, split brain
Sync vs async
ModeAvantageInconvénient
Asynclatence basseperte possible (RPO>0)
SyncRPO≈0latence + risque indispo
RPO/RTO
RPO : combien de données je peux perdre ?
RTO : combien de temps je peux ĂȘtre down ?
Choix architecture = arbitrage business.
        
Split brain & quorum
Split brain : 2 primaires en mĂȘme temps
=> corruption logique
Prévention :
- leader election (quorum)
- fencing (STONITH)
- consensus store (etcd/raft)
        
Sharding (scale horizontal)
Sharding = partitionner données sur plusieurs nodes
Défis :
- transactions cross-shard
- joins compliqués
- rebalancing
Souvent :
- commencer par read replicas + caching
- shard seulement si nécessité
        
Backup & restore — full/incr, snapshots, PITR, tests, runbooks
Le vrai test d’un backup = restore
Checklist :
- backup full + incr planifiés
- encryption + rotation
- PITR (WAL/redo archives)
- restore automatisé (staging)
- runbook + rĂŽles
          

“On a des backups” sans test restore = on n’a pas de backups.

Logical vs physical
TypeAvantageInconvénient
Logical (dump)portablelent sur gros volumes
Physicalrapide restorecouplé version/format
Snapshotinstantanécohérence dépend intégration
SĂ©curitĂ© & compliance — RBAC, chiffrement, secrets, audit, masking, multi-tenant
AuthN/AuthZ
- Auth : qui est l'utilisateur ? (cert, password, IAM)
- AuthZ : que peut-il faire ? (roles, grants)
Principe :
- least privilege
- séparation read/write/admin
        
Chiffrement : at rest & in transit
  • TLS entre app ↔ DB.
  • Chiffrement disque / tablespaces.
  • Gestion secrets (vault), rotation.
Audit & traçabilité
- journaliser accĂšs admin
- tracer opérations sensibles
- alerter sur anomalies
- conserver logs selon policy
        
Multi-tenant : piĂšges
  • Isolation logique (schemas) vs physique (instances).
  • Quotas (CPU/IO) pour Ă©viter noisy neighbor.
  • Row-level security si disponible.
Ops / perf / tuning — monitoring, slow queries, pools, maintenance, SLO
Monitoring (minimum vital)
- CPU / RAM / IOPS / latency disk
- connexions (pool saturation)
- locks + deadlocks
- replication lag
- cache hit ratio
- top queries (p95)
        
Perf : 10 leviers
  1. Index adaptĂ©s aux requĂȘtes (et pas trop).
  2. Plans corrects (stats Ă  jour).
  3. Connection pooling (éviter 10k connexions).
  4. Cache (buffer) dimensionné.
  5. Batching writes, éviter transactions longues.
  6. Partitioning si gros volumes.
  7. Réduire I/O (covering index, compression).
  8. Eviter N+1 cÎté ORM.
  9. Workload séparation (read replica/warehouse).
  10. Hardware/stockage adapté (NVMe/IOPS).
Maintenance : Ă©viter la “surprise”
- vacuum/compaction (selon moteur)
- bloat tracking
- reindex / analyze
- upgrades planifiés (test)
- capacity planning (croissance)
        
Incident playbook (résumé)
1) Identifier symptĂŽme : latency, errors, locks, disk full
2) Protéger : limiter traffic, read-only, circuit breaker
3) Diagnostiquer : top queries, locks, IO, replication lag
4) Mitiger : kill query, add index, scale read, failover
5) Postmortem : cause -> action (monitoring, code, ops)
        
Playbook “choisir & lancer une base” — en 30 jours (prod-ready)
Jours 1–7 : cadrage
  1. Workload : OLTP/OLAP, reads/writes, p95 latency, throughput.
  2. Données : taille, croissance, access patterns, retention.
  3. Garanties : ACID, RPO/RTO, multi-region ?
  4. Sécurité : RBAC, TLS, encryption, audit.
  5. Ops : équipe, runbooks, budget, tooling.
Jours 8–15 : design & POC
  1. SchĂ©ma + 10 requĂȘtes critiques.
  2. Index + contraintes essentielles.
  3. Tests charge (baseline).
  4. Plan backup/restore (test restore).
Jours 16–30 : prod minimal
  1. Mettre réplication + failover (quorum si besoin).
  2. Mettre monitoring (locks, IO, lag, slow queries).
  3. Mettre connection pool (app).
  4. Mettre process d’upgrade (staging, runbook).
  5. Documenter incidents + postmortems.

Objectif : une base restorable, monitorĂ©e, sĂ©curisĂ©e, et dimensionnĂ©e — avant d’ĂȘtre “rapide”.

DoD (production)
- restore testé (PITR)
- monitoring + alerting
- runbooks incident
- réplication + failover validés
- perf baseline (p95)
- sécurité (TLS, RBAC, secrets)
- plan upgrade/patch
          
Cheat-sheet DBA / backend — rùgles d’or, index, transactions, backup, anti-patterns
Rùgles d’or
  • Index selon les requĂȘtes, pas selon l’intuition.
  • Transactions courtes → moins de locks.
  • Backups testĂ©s (restore) → survie.
  • Stats Ă  jour → plans stables.
  • Pool de connexions → DB respire.
Anti-patterns
  • DB utilisĂ©e comme queue (sans raison).
  • “SELECT *” en prod sur tables larges.
  • Absence de FK/constraints “pour la perf”.
  • Index partout (writes lents).
  • Pas de PITR/restore test.
Checklist incident (express)
1) Disk full ? (WAL/logs)
2) Locks/deadlocks ? (top blockers)
3) CPU / IO saturés ?
4) Replication lag ?
5) Top queries (p95) + plan
6) Pool saturation ?
7) Mitigation : limiter traffic, kill query, add index, failover
          
Index quick tips
- indexer colonnes de JOIN et WHERE
- composite index : ordre = filtres les plus sélectifs
- covering index si read heavy
- éviter index sur colonnes trÚs low-cardinality
- supprimer index inutilisés (à prouver)