Nezha: A Key-Value Separated Distributed Store with Optimized Raft Integration

Die Arbeit stellt Nezha vor, ein verteiltes Key-Value-Speichersystem, das durch eine innovative Trennung von Schlüsseln und Werten sowie eine optimierte Raft-Integration die durch überlappende Persistenzvorgänge verursachten I/O-Overheads reduziert und dabei die Durchsatzleistung für Schreib-, Lese- und Scan-Operationen signifikant steigert, ohne die Sicherheitsgarantien von Raft zu beeinträchtigen.

Yangyang Wang, Yucong Dong, Ziqian Cheng, Zichen Xu

Veröffentlicht Wed, 11 Ma
📖 5 Min. Lesezeit🧠 Tiefgang

Each language version is independently generated for its own context, not a direct translation.

Stellen Sie sich vor, Sie betreiben eine riesige, hochmoderne Bibliothek, die von einem Team aus drei Bibliothekaren (den Servern) verwaltet wird. Diese Bibliothek ist für „Big Data" da – also für unvorstellbar große Mengen an Informationen, die ständig hinzukommen und abgerufen werden müssen.

Das Problem mit herkömmlichen Bibliotheken (wie sie heute oft genutzt werden) ist, dass sie extrem ineffizient arbeiten, wenn es darum geht, neue Bücher einzusortieren. Das Papier, das wir hier vorstellen, nennt sich Nezha. Es ist wie ein genialer neuer Plan, wie man diese Bibliothek umbaut, damit sie schneller, günstiger und trotzdem absolut sicher ist.

Hier ist die Geschichte von Nezha, einfach erklärt:

1. Das Problem: Der „Doppelte Schreibkrampf"

Stellen Sie sich vor, ein Besucher möchte ein neues Buch (ein Daten-Paar aus Schlüssel und Inhalt) in die Bibliothek legen. In einer normalen, konsistenten Bibliothek (die auf einem Protokoll namens Raft basiert) muss der Bibliothekar das Buch dreimal schreiben, nur um sicherzugehen, dass es nicht verloren geht:

  1. Der Protokoll-Notizblock: Zuerst schreibt er den Eintrag in ein streng geführtes Logbuch, damit alle drei Bibliothekare wissen, was passiert ist (das ist die Konsistenz).
  2. Der Sicherheits-Ordner: Dann schreibt er es noch einmal in einen speziellen Sicherheitsordner (WAL), falls der Computer abstürzt.
  3. Das eigentliche Regal: Und erst danach kommt das Buch in das eigentliche Regal (die Datenbank).

Das Ergebnis: Das Buch wird dreimal physisch auf die Festplatte geschrieben. Das ist wie wenn Sie einen Brief dreimal kopieren, bevor Sie ihn in den Umschlag stecken. Das kostet Zeit und Energie. Bei großen Datenmengen (große Bücher) wird dieser Prozess zum Flaschenhals.

2. Die Lösung: Nezha und die „Trennung von Kopf und Körper"

Nezha führt eine clevere Trennung ein, die man sich wie Kopf und Körper vorstellen kann:

  • Der Kopf (Schlüssel): Das ist nur der Name des Buches (z. B. „Harry Potter").
  • Der Körper (Inhalt): Das ist der dicke Text im Buch.

In Nezha werden diese beiden getrennt behandelt.

  • Der Kopf (der Name) bleibt im kleinen, schnellen Regal.
  • Der Körper (der dicke Text) wird nur ein einziges Mal in einen riesigen, langen Zettel (den ValueLog) geschrieben.

Die Magie: Statt das Buch dreimal zu kopieren, schreibt Nezha den Inhalt nur einmal. Der Bibliothekar merkt sich nur die genaue Stelle im Zettel (einen „Offset" oder eine Seitenzahl) und schreibt diese kleine Zahl in sein Logbuch.

  • Ergebnis: Statt drei Schreibvorgänge reicht jetzt einer. Das ist wie der Unterschied zwischen dem Kopieren eines ganzen Romans und dem Kopieren nur einer einzigen Zeile mit der Seitenzahl.

3. Das neue Problem: Das „Suchen im Chaos"

Aber es gibt einen Haken. Wenn der Inhalt nur einmal in einem langen, unsortierten Zettel steht, ist das Suchen schwierig. Wenn jemand nach „Harry Potter" fragt, muss der Bibliothekar erst im kleinen Register nachschauen, wo der Text steht, und dann zum langen Zettel rennen, um ihn zu holen. Das kann langsam sein, besonders wenn man viele Bücher auf einmal sucht (wie beim „Scannen" einer ganzen Reihe).

4. Der Geniestreich: Der „Aufräumer" (Garbage Collection)

Hier kommt die zweite große Innovation von Nezha ins Spiel: Ein intelligenter Aufräumer.

Stellen Sie sich vor, Nezha hat einen speziellen Mechanismus, der im Hintergrund arbeitet:

  • Er sammelt die verstreuten Texte aus dem langen Zettel.
  • Er ordnet sie nach dem Alphabet (nach den Buchtiteln).
  • Er erstellt einen neuen, perfekt sortierten Index.

Während dieser Aufräumaktion passiert etwas Geniales:

  • Neue Bücher kommen in einen neuen, frischen Bereich (New Storage).
  • Der Aufräumer arbeitet im Hintergrund an den alten Daten, ohne den laufenden Betrieb zu stören.
  • Sobald der Aufräumer fertig ist, wird der alte, chaotische Bereich weggeworfen und der neue, sortierte Bereich übernimmt.

Dieser Prozess nennt sich Raft-aware Garbage Collection. Er sorgt dafür, dass die Bibliothek nicht nur beim Schreiben schnell ist (weil sie nur einmal schreibt), sondern auch beim Lesen schnell bleibt (weil sie die Daten später sortiert und indiziert).

5. Die drei Phasen des Betriebs

Um sicherzustellen, dass niemand während des Aufräumens verwirrt wird, teilt Nezha den Prozess in drei Phasen ein:

  1. Vor dem Aufräumen: Alles ist normal, aber chaotisch.
  2. Während des Aufräumens: Das System ist wie ein Baustellen-Verkehr. Es gibt zwei Bereiche: den alten (wo die alten Daten sind) und den neuen (wo die neuen Daten reinkommen). Das System fragt beide ab, um sicherzugehen, dass man immer das Neueste bekommt.
  3. Nach dem Aufräumen: Der alte Bereich ist weg, alles ist sortiert und super schnell.

Das Fazit: Warum ist das so toll?

Die Autoren haben Nezha getestet und verglichen es mit den besten Systemen der Welt. Das Ergebnis ist beeindruckend:

  • Beim Schreiben (Put): Nezha ist im Durchschnitt 460 % schneller. Das ist, als würde man von einem Fahrrad auf einen Sportwagen umsteigen.
  • Beim Lesen (Get): Es ist 12,5 % schneller, weil der Index die Suche erleichtert.
  • Beim Suchen ganzer Reihen (Scan): Hier ist der Gewinn riesig mit 72,6 %, weil die sortierten Daten wie eine gut organisierte Bibliothek funktionieren, in der man nicht mehr durch das Chaos suchen muss.

Zusammenfassend:
Nezha ist wie ein Bibliothekar, der gelernt hat, dass man nicht jedes Buch dreimal kopieren muss. Er schreibt den Inhalt nur einmal auf, merkt sich die Stelle und nutzt einen cleveren Aufräumer, der die Bücher später wieder in die richtige Reihenfolge bringt. So bleibt die Bibliothek extrem schnell, sicher und spart enorm viel Zeit und Energie.