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)
, woversion
ist der Zustand - ein Konflikt verursacht einen Gleichzeitigkeitsfehler und eine erfolgreiche Übereinstimmung führt zu einer Erhöhung.get(key)
(gibt sowohl dievalue
und dieversion
zurück).
Die meisten Schlüssel/Wert-Strukturen sind bei allen Operationen nicht Thread-sicher. Es liegt am Benutzer, Datenrennen zu vermeiden. – iamnoten
Vermeiden Sie Datenrennen mit Mutexen usw.? Dies wäre nicht möglich von separaten Maschinen mit einem gemeinsamen KV-Speicher. – magnus
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