2017-12-01 4 views
1

Ich habe nur zwei Operationen erfordern eine Reihe von Artikeln unter Angabe Schlüsselwert speichert lesen:Wie verwalten Schlüssel-/Wertspeicher Gleichzeitigkeit?

  • set(key, value)
  • get(key)

Das ist in Ordnung für einen einzelnen Prozess, aber wenn Sie mehrere Prozesse, Wie verwaltet der Schlüsselwertspeicher Nebenläufigkeit? Ich hätte gedacht, dass eine Versionsnummer (z. B. eine Ganzzahl ohne Vorzeichen), die für verwendet wird, zum Vergleichen und Tauschen Style-Concurrency erforderlich wäre. Z. B. würden die beiden Operationen:

  • set(key, value, version), wo version ist der Zustand - ein Konflikt verursacht einen Gleichzeitigkeitsfehler und eine erfolgreiche Übereinstimmung führt zu einer Erhöhung.
  • get(key) (gibt sowohl die value und die version zurück).
+0

Die meisten Schlüssel/Wert-Strukturen sind bei allen Operationen nicht Thread-sicher. Es liegt am Benutzer, Datenrennen zu vermeiden. – iamnoten

+0

Vermeiden Sie Datenrennen mit Mutexen usw.? Dies wäre nicht möglich von separaten Maschinen mit einem gemeinsamen KV-Speicher. – magnus

+0

Für Shared KV-Stores funktionieren sie wie Datenbanken und haben normalerweise unterschiedliche Race-Handling-Mechanismen. Sie müssen ihre spezifischen Dokumente überprüfen. Ihre Versionsnummer Lösung vielleicht eine von ihnen, aber die tatsächliche Implementierung ist komplizierter. – iamnoten

Antwort

0

Es gibt zwei Arten von Design. Einige verwenden Sperren und andere verwenden MultiVersion Concurrency Control.

MVCC erreichen Nebenläufigkeit ohne Sperren. Es kann sich wie zusammengefasst werden:

  • In einem einzigen Lese kehrt die Datenbank die neueste Version der Daten
  • In einem einzigen Schreib, die databae
  • Im Falle einer neuen Version für die Daten hinzufügen der Lese-/Schreib-Parallelanforderung erhält der Lesevorgang die aktuellste Version der Daten, dh vor dem aktuellen Schreibvorgang.
  • In dem Fall der Schreib/Schreib gleichzeitige Anfrage, Ich denke,, dass einer der Schreibvorgänge aufgegeben und später wiedergegeben wird.
Verwandte Themen