Getrennte Meteor-Anwendung

8

Ich bin daran interessiert, eine Anwendung zu erstellen, die das Meteor -Framework verwendet, das für längere Zeit (mehrere Stunden) vom Netzwerk getrennt wird. Ich glaube, Meteor speichert lokale Daten im RAM in einer Mini-Mongodb js -Struktur. Wenn der Benutzer den Browser schließt oder die Seite aktualisiert, gehen alle lokalen Änderungen verloren. Es wäre schön, wenn lokale Änderungen auf der Festplatte beibehalten würden ( localStorage ?% Co_de%?). Irgendeine Chance, die bald für Meteor kommt?

Verwandte Frage ... Wie geht Meteor mit Dokumentenkonflikten um? Mit anderen Worten, wenn 2 Benutzer dasselbe MongoDB JSON-Dokument bearbeiten, wie wird dieser Konflikt gelöst? Optimistische Sperre?

    
Category6 29.10.2012, 18:26
quelle

1 Antwort

4

Konfliktlösung ist "letzter Schreiber gewinnt".

Genauer gesagt wird jede MongoDB-Operation zum Einfügen / Aktualisieren / Entfernen auf einem Client einem RPC zugeordnet. RPCs von einem bestimmten Client werden immer in der richtigen Reihenfolge wiedergegeben. RPCs von verschiedenen Clients werden auf dem Server ohne besondere Bestellgarantie verschachtelt.

Wenn ein Client versucht, RPCs bei getrennter Verbindung auszustellen, werden diese RPCs in die Warteschlange gestellt, bis der Client die Verbindung wieder herstellt, und dann in der richtigen Reihenfolge auf dem Server wiedergegeben. Wenn mehrere Clients Offline-RPCs ausführen, hängt die Reihenfolge, in der sie schließlich auf dem Server ausgeführt werden, stark davon ab, wann genau sich der Client erneut verbindet.

Für einige Offline-Mutationen wie MongoDBs $inc und $addToSet funktioniert dieses Modell ziemlich gut. Aber viele gängige Modifikatoren wie $set werden sich über lange Disconnects nicht sehr gut verhalten, da die Mutation wahrscheinlich mit intervenierenden Änderungen von anderen Clients in Konflikt gerät.

Das Erstellen von "Offline" -Apps ist mehr als das Behalten der lokalen Datenbank. Sie müssen auch RPCs definieren, die eine Art von Konfliktlösung implementieren. Schließlich hoffen wir auf schlüsselfertige Pakete, die verschiedene Auflösungsschemata implementieren.

    
debergalis 30.10.2012, 03:45
quelle

Tags und Links