Compétences clés pour devenir DBA
Un DBA performant combine SQL avancé, système Linux, réseaux & sécurité, cloud, outillage DevOps et soft skills pour tenir des SLO exigeants (dispo, RPO/RTO, latence).
SQL & transactions Linux/Unix & shell Réseau/TLS & firewall Cloud & IaC CI/CD, Git, Docker, K8s Communication & leadership
1) SQL avancé – optimisation, indexation, requêtes analytiques
Compétences attendues
- Maîtriser EXPLAIN / ANALYZE, cardinalités, sélectivité, join order.
- Index : B-Tree, GIN/GiST/BRIN (PG), bitmap (Oracle), composite & covering.
- Analyse : fenêtres (
ROW_NUMBER, SUM OVER), CTE, JSON/JSONB. - Normalisation vs dénormalisation ; partitionnement (range/list/hash).
Snippets
-- Postgres: plan + index composite
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM orders
WHERE customer_id=$1 AND created_at>now()-interval '30 days';
CREATE INDEX IF NOT EXISTS idx_orders_cid_dt ON orders(customer_id, created_at);
-- MySQL: EXPLAIN JSON
EXPLAIN FORMAT=JSON SELECT ...;Anti-patterns
- Wildcard en début (
%abc), fonctions sur colonnes indexées. - Indexes dupliqués, statistiques obsolètes, SELECT * en prod.
Tableau — Choix d’index
| Cas | Index conseillé | Notes |
|---|---|---|
| Filtre égalité multi-col. | B-Tree composite | Ordre = sélectivité décroissante |
| Recherche texte | GIN (PG) / FULLTEXT (MySQL) | Configurer stopwords |
| Range sur temps | Composite (clé, date) | Partition temps + pruning |
| Colonnes corrélées | Covering | Inclure colonnes SELECT |
2) Transactions & concurrence – ACID, isolation, verrous, deadlocks
Isolation (extraits)
| Niveau | Effet | Usage |
|---|---|---|
| READ COMMITTED | Pas de dirty reads | Par défaut PG/Oracle |
| REPEATABLE READ | Pas de non-repeatable | Par défaut MySQL |
| SERIALIZABLE | Equiv. exécution sérielle | Transactions critiques |
- Comprendre MVCC, vacuum/bloat (PG), undo/redo (Oracle/MySQL).
- Timeout de lock, retry backoff, ordre d’accès cohérent.
Snippets
-- Postgres: détecter les verrous
SELECT blocked.pid AS blocked_pid, blocking.pid AS blocking_pid, blocked.query
FROM pg_locks bl
JOIN pg_stat_activity blocked ON blocked.pid = bl.pid
JOIN pg_locks kl ON bl.locktype = kl.locktype AND bl.DATABASE IS NOT DISTINCT FROM kl.DATABASE
JOIN pg_stat_activity blocking ON blocking.pid = kl.pid
WHERE bl.GRANTED AND NOT kl.GRANTED;Anti-patterns
- Transactions longues “ouvertes”, verrous implicites via ORM.
- DDL concurrent sans fenêtre ni verrous maîtrisés.
Stratégies
- Découper transactions ; optimistic locking (version col.).
- Prioriser ordre d’accès (ex: parent → enfant).
- Surveiller wait events, deadlock graph (Oracle), InnoDB lock monitor.
3) Administration système – Linux/Unix & shell scripting
Compétences
- I/O & filesystems (XFS/EXT4), noatime, RAID/LVM, monitoring iostat.
- RAM/CPU, NUMA, hugepages (Oracle), swappiness, THP désactivées.
- Services systemd, journald/rsyslog, rotation logs.
Snippets Shell
# iostat / vmstat
iostat -x 1 3
vmstat 1 5
# sysctl (exemple)
sysctl -w vm.swappiness=1Anti-patterns
- Data/WAL/redo/temp sur le même disque ; pas d’IOPS réservées.
- THP actives, pas de NTP, noyau/firmware obsolètes.
Tableau — Contrôles OS
| Zone | Contrôle | Cible |
|---|---|---|
| CPU | Load avg | < #vCPU |
| RAM | Swap in/out | ≈ 0 en prod |
| Disque | Latence p95 | < 5-10 ms |
| FS | Inodes libres | > 10% |
4) Réseaux & sécurité – TLS, firewalls, RBAC, audit, secrets
Contrôles essentiels
- TLS requis, ciphers à jour, certificats rotation KMS/PKI.
- RBAC “least privilege”, comptes nominatifs, MFA.
- Network policies : SG/NSG, VPC/VNet privés, IP allowlist, bastion.
- Audit : pgAudit / Unified Auditing / MySQL audit plugin.
Snippets
# UFW / iptables (ex.)
ufw default deny incoming
ufw allow from 10.0.0.0/16 to any port 5432 proto tcp
# Postgres: forcer TLS (pg_hba.conf)
hostssl all all 10.0.0.0/16 certAnti-patterns
- Port DB exposé en public, comptes partagés, secrets en clair.
- Backups non chiffrés, pas de rotation de clés/secrets.
Tableau — Journalisation
| Source | Événements | Rétention |
|---|---|---|
| DB | Connexions, DDL, accès PII | ≥ 90 j |
| OS | Auth, sudo, kernel | ≥ 180 j |
| Cloud | IAM, KMS, SG/NSG | ≥ 180 j |
5) Connaissance Cloud – AWS, Azure, GCP, DBaaS & FinOps
DBaaS & options
- AWS RDS/Aurora, Azure Flexible Server, GCP Cloud SQL/AlloyDB.
- Multi-AZ, cross-region, Global DB (Aurora), backups gérés.
- Limitations : extensions/versions, tuning restreint, quotas IOPS.
IaC (Terraform) & sécurité
resource "aws_db_instance" "pg" {
engine="postgres" multi_az=true instance_class="db.m6g.large"
allocated_storage=200 backup_retention_period=35
storage_encrypted=true publicly_accessible=false
}- Rôles IAM minimaux, rotation secrets (Secrets Manager / KMS).
- Réseaux privés, SG restrictifs, audit CloudTrail.
FinOps
- Right-sizing (vCPU/RAM/IOPS), auto-pause DEV, tiering stockage.
- Surveillance Coût/req, alertes €/jour, réservations/savings plans.
- Tests de performance avant montée de gamme.
6) Outils DevOps – CI/CD, Git, Docker, Kubernetes
CI/CD DB
- Git comme source de vérité du schéma (Liquibase/Flyway).
- Stages : lint SQL → dry-run → EXPLAIN checks → fenêtre prod.
- Artifacts : rapports EXPLAIN, slow logs, tests de locks.
# Pipeline (pseudo-yaml)
steps:
- checkout
- run: liquibase updateSQL && liquibase update
- run: psql -f tests/explain_checks.sql
- approve: manual_gate
- deploy: prodContainers & K8s
- Docker pour dev/test ; pas de prod critique sans Operator mature.
- K8s : StatefulSets, PVC, PDB, Operators (Zalando/Crunchy/Percona).
- Secrets : External Secrets + KMS ; policies réseau.
Outillage
- Makefile pour scripts récurrents ; pre-commit hooks SQL.
- OPA/Conftest (policy-as-code) sur migrations et manifests.
- Observabilité CI : tests de perfs intégrés (bench/latences).
7) Observabilité & performance – SLO, métriques, profiling, capacity
SLO & KPIs
- Dispo ≥ 99.95%, RPO ≤ 5 min, RTO ≤ 30 min.
- Latence p95/99 lecture/écriture ; coût/1000 requêtes.
- Lag réplication, bloat, IOPS/latence disque, erreurs.
Dashboards & profils
- PG : pg_stat_statements, activity, WAL rate ; MySQL : Perf Schema.
- Oracle : AWR/ASH/ADDM ; SQL Monitor.
- Alerting : budgets d’erreur, silence pendant maintenance.
Capacity planning
- Prévision volumétrie (tables/index/WAL/binlog).
- Scaling lecture (réplicas) vs écriture (sharding/partition).
- Tests charge réguliers, tests de bascule HA/DR.
8) Soft skills – rigueur, communication, leadership, priorisation
Communication technique
- Traduire KPIs en impact business (CA, SLA, risque).
- Post-mortems sans blâme, revues infra/SQL pédagogiques.
Organisation & qualité
- Runbooks/playbooks à jour, CMDB/cartographie données.
- Gestion de crise (incident commander), priorisation.
Développement & mentoring
- Accompagner Dev/QA/Produit sur contrats de données & perfs.
- Formations internes (SQL, EXPLAIN, SLO) & coaching pair.
Anti-patterns : “héros solitaire”, documentation absente, blame culture, absence de gestion du risque.
