Sharding

DevOps 🔴 Senior

Definition

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).
#devops#database#interview