molily: Ajax Colaborative Editing — vulgo: „So wie bei Google Wave“

Beitrag lesen

Hallo,

Ich las dass einige es via Datenbank-Abfrage machen. Aber ich würde ungern die MySQL-DB im (mindestens) Sekundenrakt pollen um updaten zu holen.

Das meine ich ja mit »übergreifenden Logik betreffend Ändern, Speichern und Austausch der Änderungen«. Man pollt natürlich nicht ständig das gesamte Dokument. Stattdessen werden Änderungen z.B. über Long-Polling Ajax an die Clients verteilt. Also brauchst du eine Art Diff-Format, um Änderungen an einzelnen Zeichen schnell zu übertragen und anzuwenden. Beim Vornehmen von Änderungen schickt der Client ebenfalls entsprechende Diffs.

Ich habs nicht geprüft, aber ich nehme mal stark an, dass Google Wave & Co. nicht das gesamte Dokument, sondern nur die relevanten Teile hin und her schicken.

Oder dritte möglichkeit (die mir gerade einfällt) gibt es vielleicht eine Datenbank die genau auf sowelchen schnellen updates ausgerichtet ist (Postgree? Ado?).

Um serverseitige diese Diffs vorzuhalten, reicht wohl ein ordinärer Memcache oder spezielle Datenbanken wie Redis und MongoDB. Ab und an kannst du Snapshots des gesamten Dokuments auf Festplatte bzw. in einer SQL-Datenbank speichern - gebraucht wird das gesamte Dokument eigentlich nur, wenn jemand den Editor startet, von dort an werden Diffs ausgetauscht.
Eine SQL-Datenbank für die vielen kleinen Diffs hingegen scheint mir zu hoch gegriffen. Die NoSQL-Datenbanken sind für solch performante Anwendungen stark im Kommen. Aber da bin ich kein Experte.

Mathias