[OSM-Devserver] Cronjob OLM Update

Mitja Kleider mitja at kleider.name
Sa Apr 9 11:30:47 CEST 2011


On Sat, 2011-04-09 at 09:22 +0200, Alexander Matheisen wrote:
> > 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).
> 
> Eine abgeleitete Tabelle mit Diff-Update habe ich ja bereits, aber zum
> aktualisieren muss ich jedesmal ein Planetfile komplett updaten, da man
> rein aus den Diffs nicht updaten kann, sonst gibt es zum Beispiel
> Probleme bei Ways.

Das mit dem Planetfile wollen wir ja vermeiden. Mit "nur aus den Diffs"
meinte ich schon, dass man irgendwo alle Nodes liegen hat. Die
Umsetzung, insbesondere die Filterung, ist etwas umfangreicher und
sozusagen mein Plan B nach dem Summer of Code-Projekt.


> Die Lösung, die ich vorgeschlagen habe und meiner Meinung nach am
> einfachsten realisierbar ist:
> Ein Script, das erst den Updatekram für hstore behandelt, nach diesen
> Anweisungen kann man zum Beispiel den Updatebefehl für mein oder andere
> Projekte einfügen. Im Falle von OLM wäre das dann ein Script, dass das
> Diff einliest und die Änderung auf die vereinfachte Tabelle anwendet.

Hast du vor, nach dem Einspielen von dem osmChange XML in die
hstore-Datenbank, die Änderungen aus hstore zu holen oder aus der
osmChange XML-Datei?
Ich kenne die Details von Osmosis nicht, aber ich fürchte, dass da keine
XML-Datei irgendwo im Dateisystem liegenbleibt. Sven hatte sowas
angedeutet.

> > 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.
> 
> Die Variante finde ich ziemlich unnötig, da ja jedesmal alles neu
> erzeugt würde. Das System, was ich am Laufen habe, ist meiner Meinung
> schon ziemlich gut, es müsste nur noch auf hstore umgestellt werden wie
> weiter oben im Text beschrieben.

Wenn du aus dem Planet updatest, dann erzeugst du nicht alles neu?
Ich stelle mir deinen Verarbeitungsprozess so vor:
- existierende Daten sind alt, Extrakt der Daten auch
- existierende Daten werden aktualisiert
- neuer Extrakt wird erzeugt
- neuer Extrakt wird mit altem Extrakt verglichen
- Unterschied wird in alten Extrakt eingepflegt

Ist das effizienter als einen neuen Extrakt zu erzeugen und den direkt
zu verwenden? Verstehe ich etwas falsch an deinem Verarbeitungsprozess?


Mitja