Sharding
DevOps 🔴 SeniorDefinition
Partitionnement horizontal des données sur plusieurs instances de base de données. Chaque shard contient un sous-ensemble des données.
Analogie
Diviser un annuaire téléphonique en volumes A-M et N-Z pour que deux personnes cherchent en parallèle.
Exemple de code
// Shard key basée sur userId
const shardId = hash(userId) % NUM_SHARDS;
const db = shardConnections[shardId];
await db.query('INSERT INTO orders ...', [order]);
Cas d'usage
Dépasser les limites d'une seule machine quand la base atteint des téraoctets.
Anti-pattern
Mauvaise shard key (date) : un shard reçoit tout le trafic récent (hotspot).