[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