Zum Hauptinhalt springen

Keys und Values

Clustron Zaris speichert Daten als Key/Value-Paare: ein Key, der einen Eintrag identifiziert, und ein Value, der dessen Daten enthält. Das ist der direkteste Weg, mit dem System zu arbeiten, und jedes übergeordnete Feature — TTL, Leases, Koordination — baut darauf auf.

Keys​

Ein Key ist ein eindeutiger Bezeichner für einen Value. Keys sind Strings, und jeder Key gehört zu genau einem Store. Innerhalb eines Stores ist ein Key eindeutig: Das Schreiben auf einen bereits vorhandenen Key ersetzt dessen Value, statt einen zweiten Eintrag anzulegen.

Keys kodieren typischerweise Struktur im String selbst, wobei ein Trennzeichen verwandte Einträge gruppiert:

  • "user:1001"
  • "order:5002"
  • "session:abc123"

Values​

Ein Value sind die Daten, die einem Key zugeordnet sind. Ein Value kann ein beliebiger serialisierbarer Typ sein — Clustron Zaris serialisiert ihn für Sie, sodass Sie typisierte Objekte direkt speichern und abrufen, statt Bytes selbst zu verwalten. Das heißt, Sie können mit demselben Aufruf einen einfachen Skalar oder ein vollständiges Objekt speichern:

await client.PutAsync("user:1001", new User { Name = "Ali", Age = 30 });

await client.PutAsync("count", 42);

Da der Abruf typisiert ist, geben Sie beim Zurücklesen eines Values den erwarteten Typ an, und Clustron Zaris deserialisiert in diesen Typ.

Grundoperationen​

Die drei Kernoperationen sind Put, Get und Delete. Put schreibt einen Value unter einem Key, Get liest ihn zurück, und Delete entfernt ihn:

await client.PutAsync("key", "value");

var result = await client.GetAsync<string>("key");

await client.DeleteAsync("key");

Diese Operationen verhalten sich im In-Process- und im verteilten Modus identisch. Derselbe Code funktioniert, ob der Store in Ihrem Prozess oder über einen Cluster hinweg läuft — so können Sie lokal entwickeln und ohne Änderungen verteilt bereitstellen.

Keys entwerfen​

Wie Sie Keys benennen, bestimmt, wie leicht Sie Ihre Daten später finden, gruppieren und nachvollziehen können. Zwei Gewohnheiten helfen besonders.

Verwenden Sie Namespacing — ein einheitliches Präfix und Trennzeichen — um verwandte Einträge zu gruppieren, sodass user:1001, user:1002 und order:5001 sich von selbst nach Typ ordnen. Diese Struktur ist auch die Grundlage präfixbasierter Features wie Watch und Präfix-Abfragen, ein gutes Schema zahlt sich also über die Lesbarkeit hinaus aus.

Halten Sie Keys vorhersagbar. Leiten Sie sie mit einem einheitlichen Muster aus stabilen Bezeichnern ab und vermeiden Sie zufällige oder mehrdeutige Namen, damit jeder Teil Ihres Systems den Key für ein Datum konstruieren kann, ohne ihn nachschlagen zu müssen.

Keys sind auf einen Store beschränkt​

Ein Key lebt innerhalb des Stores, der ihn enthält. Keys eines Stores sind in einem anderen nicht sichtbar, und jeder Store führt seinen eigenen, unabhängigen Key-Raum. Deshalb ist der Store die Grenze für Ihre Daten: Zwei Stores können denselben Key-Namen für völlig unabhängige Values verwenden, ohne dass es zu einer Kollision kommt.

Keys sind mehr als Speicherung​

Ein Key in Clustron Zaris ist nicht nur ein Platz in einem Dictionary. Dieselben Keys können auch an den Lebenszyklus- und Koordinations-Features des Systems teilnehmen:

  • TTL, damit ein Key nach einer festgelegten Dauer automatisch abläuft.
  • Leases, damit ein Key nur existiert, solange ein Owner seine Lease aufrechterhält.
  • Koordinationsprimitive — Locks, Zähler und Watch — die auf Keys aufbauen.

Da all diese Features auf denselben Keys operieren, bleiben der gespeicherte Value und das Verhalten darum an einer Stelle, statt sich auf getrennte Systeme zu verteilen.

Nächste Schritte​