Panorama des SGBD administrés par les DBA
Comparatif approfondi des moteurs PostgreSQL, Oracle Database, MySQL et MariaDB : forces, limitations, HA/DR, outils, licensing, cloud, tuning.
SQL ACID, index avancés, réplication, partitionnement Sécurité : RBAC, chiffrement, audit DBaaS : RDS/Aurora, Azure Flexible Server, GCP Cloud SQL/AlloyDB
1) PostgreSQL â Forces, limites, patterns & outils
Points forts
- Open-source mature, ACID, MVCC robuste, JSONB.
- Extensions : PostGIS (géospatial), TimescaleDB (time-series), pg_partman, pg_stat_statements.
- Indexation avancée : GIN/GiST/BRIN, partial indexes, expression indexes.
- Réplication : streaming WAL (physique), logique (decoding), slots.
Limites typiques
- Bloat si autovacuum mal réglé (surveillance aggressive).
- Sharding natif non intégré (solutions : Citus, pg_shard, logique applicative).
Outils
- CLI :
psql,pg_dump,pg_restore,pg_basebackup. - Admin : pgAdmin, DBeaver ; Pooling : pgBouncer ; HA : Patroni/pg_auto_failover.
- Monitoring : exporters Prometheus, Grafana, pganalyze.
Snippets
-- Plan & index composite
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM orders WHERE customer_id=$1 AND created_at>now()-interval '30d';
CREATE INDEX ON orders(customer_id, created_at);
-- Réplication physique
pg_basebackup -D /replica -R -X stream -C -S slot01HA/DR
- Patroni + etcd/Consul pour lâĂ©lection ; VIP/HAProxy/pgBouncer.
- PITR via archives WAL ; tests réguliers de restauration.
- Cross-region : asynchrone ; vérifier RPO réel & latence.
Cloud
- AWS RDS/Aurora Postgres, Azure Flexible Server, GCP Cloud SQL/AlloyDB.
- Operators K8s : Zalando, CrunchyData.
Anti-patterns : autovacuum off, pas de pooler, WAL sur le mĂȘme disque que data, absence de tests de restore.
2) Oracle Database â Entreprise, RAC, Data Guard, AWR
Forces
- RAC (cluster actif/actif), Data Guard (HA/DR), partitioning avancé.
- ĂcosystĂšme performance : AWR/ASH/ADDM, Parallel Query.
- Fonctions riches (PL/SQL, analytique), compression, sécurité (TDE, VPD).
Limites
- CoĂ»ts de licences & Opex Ă©levĂ©s ; complexitĂ© dâexploitation.
- Dépendance éditeur (lock-in), compétences rares.
Outils
- OEM (Enterprise Manager), RMAN (sauvegarde/restore), Data Guard Broker.
- SQL*Plus, SQL Developer, AWR/ASH reports.
Snippets
-- RMAN
BACKUP DATABASE PLUS ARCHIVELOG;
RESTORE DATABASE; RECOVER DATABASE;
-- EXPLAIN plan
EXPLAIN PLAN FOR SELECT * FROM SALES WHERE REGION='EU';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());HA/DR
- RAC pour scalabilité & disponibilité intra-site ; Data Guard pour DR.
- Data Guard : synchro/async, fast-start failover, rĂŽle read-only.
Cloud
- OCI (Autonomous/Exadata), interconnexions avec autres clouds.
- Licensing BYOL, options onéreuses (Partitioning, Active Data Guard...).
Anti-patterns : RAC pour tout (mĂȘme sans besoin), ne pas documenter Data Guard switchover/failover, patchs retardĂ©s.
3) MySQL â Web-scale, InnoDB, Group Replication
Forces
- Large adoption web, simplicité opérationnelle, InnoDB performant.
- Réplication : async/semisync, Group Replication, InnoDB Cluster.
- ĂcosystĂšme Percona, Orchestrator (gestion topologie).
Limites
- Fonctionnalités avancées SQL moins riches que PG/Oracle (selon version).
- Historique de query cache déprécié ; tuning buffer pool crucial.
Outils
- mysql client, MySQL Shell, MySQL Enterprise Backup.
- Percona Toolkit, Orchestrator, ProxySQL, phpMyAdmin (admin simple).
Snippets
-- EXPLAIN JSON
EXPLAIN FORMAT=JSON
SELECT * FROM t WHERE status='OK' AND dt>NOW()-INTERVAL 7 DAY;
-- Dump/restore
mysqldump --single-transaction --routines appdb | gzip > /bkp/app.sql.gzHA/DR
- Group Replication (quorum, primaire unique), Orchestrator pour bascules.
- Read replicas pour offload lecture, semi-sync pour RPO réduit.
Cloud
- AWS RDS/Aurora MySQL, Azure Database for MySQL, GCP Cloud SQL.
- Costing : IOPS, stockage, trafic inter-AZ.
Anti-patterns : tout mettre en MyISAM, pas dâOrchestrator, pas de semi-sync alors que RPO doit ĂȘtre bas.
4) MariaDB â Compat MySQL, moteurs alternatifs, Galera
Forces
- Compatibilité MySQL (générale), moteurs alternatifs (Aria, ColumnStore...).
- Galera Cluster (selon édition) pour HA multi-master synchrone intra-LAN.
Limites
- Ăcart fonctionnel croissant avec MySQL selon versions.
- Galera : write amplification, latence sensible, besoins réseau stricts.
Outils
- mysql client, MaxScale (proxy), mariabackup (Percona XtraBackup-like).
- Percona Toolkit compatible (selon outils), DBeaver, HeidiSQL.
Snippets
# Sauvegarde incrémentale (mariabackup)
mariabackup --backup --target-dir=/bkp/full
mariabackup --prepare --target-dir=/bkp/fullHA/DR
- Galera (multi-master), proxys (HAProxy/MaxScale), split-brain à éviter.
- Réplication async pour DR distant ; binlog filtering si nécessaire.
Cloud
- MariaDB SkySQL, offres managées tierces, RDS (compat MySQL, pas MariaDB natif partout).
Anti-patterns : Galera cross-région, pas de quorum, proxys non redondés, tailles buffers par défaut.
5) Comparatif multi-critÚres (fonctionnel, perfs, coûts, ops)
| CritĂšre | PostgreSQL | Oracle | MySQL | MariaDB |
|---|---|---|---|---|
| Licence | OSS (PostgreSQL License) | Propriétaire (options coûteuses) | OSS/Com (Oracle stewardship) | OSS (Foundation/Corp) |
| Langage procédural | PL/pgSQL + PL/Python/⊠| PL/SQL (riche) | Stored routines | Stored routines |
| JSON natif | JSON/JSONB puissant | JSON support (selon version) | JSON natif | JSON natif |
| Index avancés | GIN/GiST/BRIN, partial, expression | Bitmap, function-based | B-Tree (InnoDB), fulltext | B-Tree/alt., fulltext |
| Partitionnement | Declarative partitions | TrÚs avancé | Native (range/hash/list) | Native |
| HA locale | Patroni, failover | RAC (actif/actif) | Group Replication | Galera (multi-master) |
| DR distant | Streaming/Logical + archive | Data Guard | Async/semisync | Async + Galera (local) |
| ĂcosystĂšme | Extensions riches | Suite entreprise complĂšte | Percona, Orchestrator | MaxScale, mariabackup |
| Coûts | Infra & ops (pas de licence) | Licence + support élevés | Modérés (DBaaS possible) | Modérés |
ParamĂštres critiques par moteur (extrait)
PostgreSQL
- shared_buffers, work_mem, effective_cache_size
- wal_level, max_wal_size
Oracle
- SGA/PGA sizing, redo log groups/size
- optimizer_features_enable
MySQL
- innodb_buffer_pool_size, log_file_size
- sync_binlog, innodb_flush_log_at_trx_commit
MariaDB
- InnoDB/Aria config, thread pooling
- Galera gcache, quorum
6) Patterns HA/DR par SGBD + diagramme topologies
Topologies communes
- PG : Patroni + 1 primaire, N réplicas RO ; PITR via archives.
- Oracle : RAC (HA locale actif/actif) + Data Guard (DR, RO).
- MySQL : InnoDB Cluster (Group Replication), Orchestrator.
- MariaDB : Galera multi-master intra-site + DR async.
ContrĂŽles
- Lag réplication, divergence, split-brain.
- Tests de bascule, TTL DNS, reprise connexions (poolers/proxys).
Diagramme (exemple général, RO/WR, DR)
Anti-patterns : cross-region synchrone (latence), pas de tests de failover, pas de bascule applicative/connexions.
7) Outils dâadministration, sauvegarde & monitoring
Administration
- PostgreSQL : psql, pgAdmin, DBeaver, pgBouncer (pooler).
- Oracle : OEM, SQL Developer, Data Guard Broker.
- MySQL/MariaDB : mysql client, MySQL Shell, ProxySQL, MaxScale.
Backup/Restore
- PG : pg_dump/pg_restore, pg_basebackup, WAL archives.
- Oracle : RMAN (incr, validate), Flashback (selon options).
- MySQL/MariaDB : mysqldump, Percona XtraBackup/mariabackup.
Monitoring/Observabilité
- Prometheus + Grafana, exporters dédiés.
- PG : pg_stat_statements ; Oracle : AWR/ASH ; MySQL : Performance Schema.
- Logs : deadlocks, slow queries, erreurs, I/O, réplication lag.
Automatisation
- Ansible (post-install, patching), Terraform (DBaaS), Liquibase/Flyway (migrations).
Snippets utiles
# PG Top requĂȘtes
SELECT query, calls, total_exec_time
FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;
# Oracle RMAN
BACKUP DATABASE PLUS ARCHIVELOG;
# MySQL EXPLAIN
EXPLAIN FORMAT=JSON SELECT * FROM t WHERE id = ?;Anti-patterns : pas dâexporter, pas dâalerting, backups non testĂ©s, pas de pooler/proxy.
8) Choisir son SGBD â Grille de dĂ©cision
| Besoins | PostgreSQL | Oracle | MySQL | MariaDB |
|---|---|---|---|---|
| Fonctions SQL avancĂ©es, JSONB, extensions | âââââ | ââââ | âââ | âââ |
| Grand compte, contraintes fortes, RAC/Data Guard | âââ | âââââ | âââ | ââ |
| Web-scale simple, Ă©cosystĂšme Percona/Orchestrator | âââ | ââ | ââââ | âââ |
| CoĂ»t licence | TrĂšs faible | ĂlevĂ© | Faible/ModĂ©rĂ© | Faible |
| Compétences internes dispo | Bon pool | Plus rare | TrÚs large | Large |
| DBaaS natif & options cloud | TrĂšs bon | TrĂšs bon (OCI) | TrĂšs bon | Bon |
RĂšgles rapides
- PostgreSQL si besoin dâextensions/JSONB/SQL riche.
- Oracle si RAC/Data Guard & fonctions entreprise critiques.
- MySQL pour simplicité, web-scale, outillage Percona.
- MariaDB si moteurs alternatifs & coût serré.
Coûts & FinOps
- Capex/Opex : licences, support, IOPS, stockage, trafic inter-AZ.
- Right-sizing, auto-pause non-prod, rétention froide (S3/Archive).
Risques & mitigations
- Lock-in Ă©diteur â couches dâabstraction, portabilitĂ© schĂ©ma.
- Manque de compĂ©tences â formation, standardisation, automatisation.
- DR mal testĂ© â exercices rĂ©guliers, rapport de restore.
