Le partitionnement proposé par SynSql repose sur une fonction de hachage. A la création de chaque table, l'utilisateur indique quelles colonnes feront partie de la clef de hachage ainsi que le nombre de partitions qu'il souhaite.
Au moment de l'insertion d'une rangée dans une table, le synsql broker va calculer la fonction de hachage sur la valeur données aux colonnes qui constituent la clef de hachage. La rangée sera stockée dans la partition qui correspond au résultat de la fonction.
- La clef de hachage n'est pas modifiable. L'explication de cette limite nécessite celle d'autres concepts, elle est traitée plus avant dans ce document.
- La fonction de hachage est calculée sur la valeur qui est présente dans l'ordre d'insertion. Pas sur l'évaluation de cette valeur. Le hachage de l'expression '2+3' donne un résultat différent de celui de '5'. Dans le calcul de la fonction de hachage, les caractères simple quote qui entourent éventuellement l'expression ne sont pas pris en compte. Le hachage de '5' et celui du caractère 5 ont la même valeur.
Dans un modèle en étoile cette restriction est importante. Pour des requêtes sans jointure, elle n'a aucun impact.
La création d'une table SynSql se fait en deux phases. Une phase de conception et une phase de déploiement.
3.1 Conception
Cette phase débute par un ordre "create table". Cet ordre peut contenir une requête de définition de table. A défaut de requête la table est créée vide.
Il est ensuite possible d'utiliser des ordres "alter table" pour ajouter ou supprimer des colonnes. Pour modifier une collone, il faut la supprimer puis la recréer.
D'autres ordres "alter table" vont permettre de définir la clef de hachage de la table.
Dès que l'odre initial create table est accepté, la table est enregistrée dans le dictionnaire. Mais tant que la phase suivante n'est pas achevée la table n'est pas utilisable.
3.2 Déploiement
L'ordre "deploy table ..." est spécifique à SynSql. Il permet à l'utilisateur de spécifier que la définition de la table est terminée et le nombre de partitions qu'il faut lui allouer.
A réception d'un ordre "deploy table ...", le synsql broker concerné analyse la faisabilité de la demande et si elle est possible, il alloue les partitions de la table sur différents data brokers.
Après le déploiement d'une table il n'est plus possible de modifier son nombre de partitions.
L'allocation des partitions faite pendant la phase de déploiement se traduit par la création de tables ordinaires sur les data brokers retenus. Toutes ces tables ont la même définition qui correspond exactement à la demande de l'utilisateur au terme de la phase de conception. Pour désigner les tables créées lors d'un déploiement, nous utilisons le terme segment.
Il est important de le préciser : deux segments d'une même table ne peuvent pas être hébergés sur le même data broker. Ce point explique pour partie en quoi une demande de déploiement peut ne pas être réalisable : Dans un cluster où la licence autorise un maximum de 100 data brokers, il n'est pas possible de déployer une table sur 101 partitions.
| 15 Jan 2026 07:20:00 | English version |