Un modèle en étoile comporte une table centrale qui comporte une clef primaire (valeur unique, non nulle). Cette clef peut porter sur une seule colonne de la table ou sur plusieurs. Dans un cluster SynSql, cette clef sera aussi la clef de hachage de la table.
Autour de cette table, on trouve d'autres tables qui contiennent toutes une clef étrangère (foreign key) sur la clef primaire de la table centrale.
Un modèle en étoile est un lieu qui vous permet de réaliser des jointures consistentes.
Nous considérons une entreprise qui possède plusieurs sites Internet marchands.
Nous pouvons définir une table centrale visiteurs qui va permettre de stocker les données nécessaires pour gerer les visiteurs des sites de l'entreprice. Une partie des visiteurs est anonyme, les autres sont des clients connus. Tous sont identifiés par un identifiant numérique unique.
Autour de cette table clients, nous pouvons créer des tables annexes telles que :
- visites une table de log qui contient toutes les visites des clients sur les page des sites internet de l'entreprise.
- paniers qui contient tous les paniers créés par les visiteurs.
- commandes qui contient les commandes crées par les visiteurs clients.
- demandes qui contient des demandes d'information sur des produits.
- reclamations qui contient des éléments relatif aux diverses réclamations des visiteurs.
Chacune de ces tables contient la clef primaire de la table centrale clients
SynSql permet la mise en place d'un modèle en étoile via le concept de tables voisines. Deux tables voisines ont le même nombre de partitions et le même nombre de réplicats. Mais de plus, à valeur de clef de hachage identique, les segments des tables sont portés par les mêmes brokers. Ce qui permet aux requêtes de retourner des résultats cohérents.
Le fait de déclarer deux tables voisines ne suffit pas à garantir l'intégrité des données rapportées par les requêtes. L'utilisateur doit se contraindre à créer ses données de façon consistante. Pour mémoire, au moment de l'insertion, SynSql calcule la clef de hachage sur ce qui lui est fourni. Donc pas sur l'évaluation de ce qui lui est fourni. La clef de hachage de 1 + 1 est différente de celle de 2. Si les insertions dans les tables ne sont pas régulières le résultat des requêtes sera inconsistent.
Pour créer une table voisine d'une autre, il suffit d'utiliser la clause close to ... de l'instruction deploy table.
Si aux tables décrites ci-dessus nous ajoutons une table produit nous sortons du modèle en étoile. Les requêtes en jointure sur cette table ne peuvent rapporter des résultats cohérents. La table produit n'a aucun lien avec la notion de client.
Ici encore, il existe des solutions programatiques pour contourner le problème, mais c'est à l'utilisateur qu'il appartient de les mettre en oeuvre.
| 15 Jan 2026 05:36:24 | English version |