[OSM-Devserver] Cronjob OLM Update
Mitja Kleider
mitja at kleider.name
Sa Apr 9 08:53:32 CEST 2011
On Fri, 2011-04-08 at 14:23 +0000, Sven Geggus wrote:
> Nun ist es halt bei allen Arten von POI Karten so, dass es da IMO definitiv
> etwas generisches braucht, weil es überhaupt nicht angehen kann, dass jede
> POI Karte ihre eigene Datenbank mit inkrementellem update verwendet.
Ich habe mich letzten Summer of Code genau mit diesem Problem
auseinandergesetzt. Die von mir verwendete Datenbank halte ich momentan
nicht für produktiv mit OSM einsetzbar, besonders die Diffs haben zu
Problemen geführt.
Die aktuell beste funktionierende Lösung ist PostGIS mit hstore, etwas
anderes wird bei der generischen jXAPI ja auch nicht eingesetzt.
Um die Antwortzeiten zu beschleunigen, fallen mir nur zwei Varianten
ein:
- aus hstore abgeleitete Tabellen, die regelmäßig verworfen und neu aus
hstore abgeleitet werden, und
- abgeleitete Tabellen, die sich aus den Diffs aktualisieren (und nur
aus den Diffs, nicht aus einem aktualisierten Planet).
Die erste Variante klappt mit mehreren verschiedenen Projekten nur mit
größeren zeitlichen Abständen. Die zweite Variante skaliert so überhaupt
nicht.
Wenn wir die zweite Variante weiter verfolgen wollen (mit dem Ziel,
möglichst aktuelle Daten zu bieten), schlage ich ein Push-System für
Änderungen vor. Ein Cronjob parst die Diffs und sendet nach vorher
definierten Filterregeln die gefilterten Änderungen an die jeweiligen
Projekte. In den Niederlanden gab es dazu schon ein XMPP-basiertes
Projekt, ich werde mal nachhaken, wie weit das ist.
Für aktuell praktikabel halte ich die erste Variante. Wir könnten dafür
auch einen gemeinsamen Cronjob einrichten, der alle POI-Tabellen
erzeugt. Dann kann man den zeitlichen Abstand für alle POI-Projekte
gleichzeitig auf die richtige Serverlast anpassen.
Mitja