[Talk-de] Liste aller Grenzrelationen der Staaten - Lücken in Diffs

marcus.wolschon at googlemail.com marcus.wolschon at googlemail.com
Mo Okt 12 07:37:47 UTC 2009


On Mon, 12 Oct 2009 09:23:29 +0200, Frederik Ramm <frederik at remote.org>
wrote:
> Hallo,
> 
> marcus.wolschon at 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




Mehr Informationen über die Mailingliste Talk-de