Stratégies de partitionnement horizontal : intervalle, hachage et annuaire
Comparez le partitionnement horizontal par intervalle, par hachage et par annuaire, puis choisissez une clé de partition équilibrant la charge et restant stable.
Stratégies de partitionnement horizontal : intervalle, hachage et annuaire est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que le partitionnement horizontal ?
Répartir une base de données logique unique entre plusieurs serveurs physiques (« partitions »), chacun contenant un sous-ensemble des données. On le fait lorsqu'un seul serveur ne peut plus gérer la charge de travail.
Partitionnement horizontal ≠ réplication
- Réplication — mêmes données sur plusieurs serveurs (pour la haute disponibilité et la mise à l'échelle des lectures)
- Partitionnement horizontal — données différentes sur des serveurs différents (pour mettre les écritures à l'échelle et augmenter la capacité)
Vous combinez souvent les deux : chaque partition est répliquée pour assurer la haute disponibilité.
Trois stratégies de partitionnement
- Par intervalle — partitionnement selon une plage de valeurs (identifiants de 1 à 1 M sur la partition A, de 1 M à 2 M sur la partition B)
- Par hachage — hachage de la clé de partitionnement, modulo N
- Par répertoire — une table distincte associe chaque clé à une partition
Partitionnement par intervalle
Simple et efficace pour les séries temporelles et les identifiants ordonnés. Risque : des partitions surchargées si les données récentes reçoivent tout le trafic.
-- Conceptually:
-- Shard A: user_id 1 - 1,000,000
-- Shard B: user_id 1,000,001 - 2,000,000
-- Shard C: user_id 2,000,001 - 3,000,000Partitionnement par hachage
Répartition uniforme par défaut. L'ajout de partitions est difficile, car le repartitionnement déplace toutes les clés :
-- shard_id = hash(user_id) % N
-- N=4: any user_id evenly distributed across 4 shardsPartitionnement par répertoire
Une table de recherche associe chaque clé à sa partition :
CREATE TABLE shard_routing (
user_id BIGINT PRIMARY KEY,
shard_id INT NOT NULL
);
-- Looking up a user costs a directory query first; cache it.Hachage cohérent
Le hachage modulo est fragile lors de l'ajout de partitions. Le hachage cohérent réduit au minimum le nombre de clés à déplacer :
-- Each shard owns a ring segment.
-- Adding a new shard moves only ~1/N of the keys.Choisir une clé de partitionnement
La clé de partitionnement détermine tout. Les bonnes clés de partitionnement :
- Sont réparties uniformément
- Sont présentes dans la plupart des requêtes (ce qui évite la diffusion entre partitions)
- Sont immuables (ou changent rarement)
<p>Common picks: user_id, tenant_id, customer_id. Avoid: timestamps for write-heavy workloads (creates hot shards).</p>Un locataire par partition
Dans un logiciel SaaS multi-locataire, chaque locataire dispose d'une partition dédiée. Le fonctionnement est facile à comprendre et l'isolement des locataires très actifs est simple.
Conception permettant le repartitionnement
Concevez votre système en prévision d'un futur repartitionnement :
- Utilisez des partitions virtuelles (par ex. 1 024 partitions logiques associées à des partitions physiques)
- Facilitez la migration d'une partition logique vers un autre serveur physique
- Évitez d'inscrire en dur le nombre de partitions dans le code de l'application
Requêtes inter-partitions
Le problème le plus difficile. Les JOIN et les rapports entre partitions nécessitent une diffusion des requêtes, puis une logique d'agrégation dans l'application. Nous verrons cela dans la prochaine leçon.
Transactions entre partitions
Les transactions atomiques entre partitions nécessitent une validation en deux phases (2PC) ou des sagas. Conseil courant : concevez votre système de façon que les transactions restent au sein d'une seule partition.
Récapitulatif
Trois stratégies ; choisissez en fonction de la forme de votre trafic.
- Par intervalle — simple, mais avec un risque de partition surchargée
- Par hachage — uniforme, mais rigide
- Par répertoire — flexible, mais ajoute de la latence
- Hachage cohérent pour un repartitionnement progressif
Vérification rapide
Vous partitionnez une table d'utilisateurs par hachage de user_id. Vous passez de 4 à 5 partitions. Combien de clés doivent être déplacées ?
Questions Fréquemment Posées
La leçon « Stratégies de partitionnement horizontal : intervalle, hachage et annuaire » est-elle gratuite ?
Oui — le texte complet de « Stratégies de partitionnement horizontal : intervalle, hachage et annuaire » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Stratégies de partitionnement horizontal : intervalle, hachage et annuaire » ?
Comparez le partitionnement horizontal par intervalle, par hachage et par annuaire, puis choisissez une clé de partition équilibrant la charge et restant stable. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Stratégies de partitionnement horizontal : intervalle, hachage et annuaire » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Stratégies de partitionnement horizontal : intervalle, hachage et annuaire
- Requêtes inter-partitions : le problème le plus complexe
- Citus et Postgres distribué
- Quand NE PAS partitionner horizontalement