On Mon, 12 Oct 2009 09:23:29 +0200, Frederik Ramm <frede...@remote.org> wrote: > Hallo, > > marcus.wolsc...@googlemail.com wrote: >>> Eine Datenbank, die regelmaessig nur mit diffs gefuettert wird - >>> Ausnahme die "minute-replicate"-Diffs - wird langsam inkonsistent, weil
>>> prinzipbedingt ein ganz kleiner Teil von Edits verloren gehen *kann* bei >>> >>> so einem Diff (auch Stunden- oder Tagesdiffs). >> >> Kannst du das näher erläutern? > > Osmosis erzeugt die Diffs auf dem zentralen Server aufgrund der > History-Tabelle mit einem Query, der alles abfragt, was zwischen zwei > Zeitpunkten passiert ist. Aufgrund der Transaktionsisolierung bekommt > Osmosis aber nur die Daten, die einen Timestamp im fraglichen Fenster > haben UND deren Transaktion schon committed ist. Durch diff-Uploads kann > es einige sehr lang laufende Transaktionen geben. > > Beispiel: Das stuendliche Diff fuer den Zeitraum 13:00-14:00 wird um > 14:20 erzeugt und hat alle Daten mit Timestamp 13:00-14:00. Wenn um > 12:59 eine Transaktion begonnen wird, die bis 13:21 laeuft, so > erscheinen um 13:21 ploetzlich lauter Daten in der Datenbank, die einen > Timestamp von 12:59 haben. Diese verpasst das Diff, und sie werden auch > im 14:00-15:00-Diff nicht drin sein. > > Fuer alle anderen Arten von diffs gilt das vergleichbar. Danke für die Erklährung Frederik. Mir ist da gerade etwas zu eingefallen: Werden die Changeset-IDs linear hochgezählt? Falls ja könnte man die Query so gestalten: Select * from changesets where id > [grösste Chageset ID des letzten Laufes] OR id in [alle nicht aufgetauchten changeset IDs in einem "geeignetem" Intervall] der zweite Teil könnte möglicherweise genau diese Lücken finden. Marcus _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de