Gibt es eine verteilte, hoch verfügbare, eventuell konsistente db, die eine idempotente Operation auf skalaren Werten unterstützt?Eventuell konsistente verteilte Datenbank mit idempotentem Erhöhungsoperator?
Wenn wir normale Updates verwenden, besteht die Möglichkeit, dass wir zwei verschiedene Werte auf verschiedenen Knoten haben und keiner der Werte korrekt ist, weil wir die Beträge um beide Transaktionswerte erhöhen müssen.
Gibt es eine verteilte Datenbank, wo ich einen Befehl erhöhen kann (Schlüssel, Attribut [Spalte], Diff), so dass ich sicher bin, dass dieser Vorgang auf anderen Replikate unabhängig von der aktuellen ausgeführt wird Wert des Kontos? Auf diese Weise werde ich eine eventuelle Konsistenz für die Erhöhung der Operation haben, auch wenn 2 verschiedene Knoten um einen anderen Wert erhöht werden, da diese Zunahme sich auf andere Repliken ausbreiten würde.
Ich spreche nicht von bedingten Updates, da es nicht auf Hochverfügbarkeit db wie Cassandra funktionieren würde (deshalb haben sie diese Funktion nicht), ich interessiere mich für atomare Zunahmeoperation.
Danke.
P.S. Im Fall Idempotent Erhöhung würde ich einen Befehl Anstieg hat (Schlüssel, Attribut, diff, lock_key), so würde das db nicht erhöht, wenn es bereits den gleichen Befehl mit dem gleichen lock_key
tl erhalten; dr:
Gibt es eine Möglichkeit, einen genauen Zähler in verteilten AP Art Datenbank zu machen? 2 Probleme: 1) Wenn ich Operation sende, um einen Zähler zu erhöhen, und ich keine Antwort erhalte, würde ich diese Anfrage erneut senden, aber ich möchte den Zähler nicht zweimal erhöhen. 2) Wenn dieser Zähler in der gleichen Zeit auf einem anderen Replikat aktualisiert wird, möchte ich schließlich kombinieren, erhöht, um die Werte nicht zu überschreiben. Also gibt es einen Befehl wie erhöhen ("Johns Balance", +5.67, "sdfsdfas"), wobei sdfsdfas eine Zeichenfolge ist, die verwendet wird, um doppelte Aktualisierung zu verwerfen. Gibt es eine db, die diese Art von Befehlen repliziert?
Ich bin mir nicht sicher, ob ich das Szenario verstehe, wo dies nützlich wäre. Wenn es wichtig ist, dass alle Replikate zu jeder Zeit denselben Wert beibehalten müssen, müssen sie synchronisiert bleiben. Wie würden "idempotente Updates" dabei helfen? –
Was ist mit nur einer db mit Replikation zu verwenden, und dann äquivalent in 'ince_operations (target_id, erhöhen_betrag, operation_id)' und dann sum() Ihren Weg zum Sieg? operation_id identifiziert doppelte Vorgänge. Es ist sicherlich schließlich konsistent. – goat