Clés et valeurs
Clustron Zaris stocke les données sous forme de paires clé-valeur : une clé qui identifie une entrée et une valeur qui contient ses données. C'est la façon la plus directe de travailler avec le système, et chaque fonctionnalité de plus haut niveau — TTL, baux, coordination — est construite par-dessus.
Clés
Une clé est un identifiant unique d'une valeur. Les clés sont des chaînes, et chaque clé appartient à exactement un store. À l'intérieur d'un store, une clé est unique : écrire sur une clé qui existe déjà remplace sa valeur plutôt que de créer une seconde entrée.
Les clés encodent typiquement une structure dans la chaîne elle-même, en utilisant un séparateur pour regrouper les entrées apparentées :
"user:1001""order:5002""session:abc123"
Valeurs
Une valeur est la donnée associée à une clé. Une valeur peut être de n'importe quel type sérialisable — Clustron Zaris la sérialise pour vous, de sorte que vous stockez et récupérez directement des objets typés plutôt que de gérer vous-même des octets. Cela signifie que vous pouvez stocker un simple scalaire ou un objet complet avec le même appel :
await client.PutAsync("user:1001", new User { Name = "Ali", Age = 30 });
await client.PutAsync("count", 42);
Parce que la récupération est typée, vous spécifiez le type que vous attendez lorsque vous relisez une valeur, et Clustron Zaris désérialise dedans.
Opérations de base
Les trois opérations fondamentales sont put, get et delete. Put écrit une valeur sous une clé, get la relit, et delete la supprime :
await client.PutAsync("key", "value");
var result = await client.GetAsync<string>("key");
await client.DeleteAsync("key");
Ces opérations se comportent de façon identique en mode in-process et en mode distribué. Le même code fonctionne que le store s'exécute à l'intérieur de votre processus ou à travers un cluster, ce qui vous permet de développer localement et de déployer en distribué sans changements.
Concevoir les clés
La façon dont vous nommez les clés détermine la facilité avec laquelle vous pourrez retrouver, regrouper et raisonner sur vos données par la suite. Deux habitudes font une grande différence.
Utilisez le cloisonnement par espace de noms (namespacing) — un préfixe et un séparateur cohérents — pour regrouper les entrées apparentées, de sorte que user:1001, user:1002 et order:5001 se regroupent naturellement par type. Cette structure est aussi ce sur quoi opèrent les fonctionnalités basées sur les préfixes telles que les observateurs (watch) et les requêtes par préfixe, de sorte qu'un bon schéma est payant au-delà de la lisibilité.
Gardez les clés prévisibles. Dérivez-les d'identifiants stables selon un motif cohérent, et évitez les noms aléatoires ou ambigus, de sorte que n'importe quelle partie de votre système puisse construire la clé d'une donnée sans avoir à la rechercher.
Les clés sont cloisonnées à un store
Une clé vit à l'intérieur du store qui la détient. Les clés d'un store ne sont pas visibles dans un autre, et chaque store maintient son propre espace de clés indépendant. C'est pourquoi le store est la frontière de vos données : deux stores peuvent utiliser le même nom de clé pour des valeurs entièrement indépendantes sans aucune collision.
Les clés sont plus que du stockage
Une clé dans Clustron Zaris n'est pas seulement un emplacement dans un dictionnaire. Les mêmes clés peuvent aussi prendre part aux fonctionnalités de cycle de vie et de coordination du système :
- TTL, pour qu'une clé expire automatiquement après une durée définie.
- Baux, pour qu'une clé n'existe que tant qu'un propriétaire maintient son bail en vie.
- Primitives de coordination — verrous, compteurs et observateurs (watch) — qui s'appuient sur les clés.
Parce que ces fonctionnalités opèrent toutes sur les mêmes clés, la valeur que vous stockez et le comportement qui l'entoure restent en un seul endroit au lieu d'être dispersés sur des systèmes séparés.