FOSSGIS/Server/Projects/OSM Server Side Script

From OpenStreetMap Wiki
< FOSSGIS‎ | Server‎ | Projects
Jump to navigation Jump to search

Name des Projektes/Project Name

OSM Server Side Script

Kontakt/Main Contact

Roland

Andere Projektmitarbeiter/Other people involved

bisher keine - neue Mitstreiter erwünscht

Kurze Beschreibung des Projektes/Short description of your project

OSM Server Side Script ist ein OSM-Daten-Spiegelserver, der komplexe Anfragen beantwortet. Als Beispielklasse von Anfragen ermöglicht der Server im Moment insbesondere, zu gegebenen Koordinaten alle Flächen zu bestimmen, die sich über diese Koordinaten erstrecken. Eine zweite Beispielanwendung ist es, kleine Auszüge der OSM-Daten on the fly als Downloads bereitzustellen.

Ein Ziel des Systems ist es, auch solche Anfragen direkt über das Netz anzubieten, die sonst den Betrieb einer eigenen GIS-Datenbank, die die OSM-Daten spiegelt, nötig machen würden. Ein zweites Ziel ist langfristig angelegt: die Tatsache, dass das Tagging in OSM auch nach mehreren Jahren noch einer lebhaften Evolution unterliegt, um tatsächlich existierende Phänomene adäquat abzubilden, zeigt, dass auch langfristig ein festes, globales Tagging-Schema nicht die Bedürfnisse aller Mapper abdecken kann. OSM3S soll in Richtung einer Testplattform für einen Semantik-Server entwickelt werden, so dass die interne Logik ("auf einer Busspur sind keine Fußgänger erlaubt") getrennt von den Kartendaten und den Rendering-Stylesheets gepflegt werden können.

Für die Erreichung dieser Ziele sind eine Reihe von Design-Entscheidungen getroffen worden:

  • der Server soll bei hoher Last große Abfragen zuverlässig ablehnen, also im Falle einer Nichtablehnung stets auch ausliefern können
  • die Regeln, nach denen die Daten aufbereitet werden, sollen von der Community änderbar sein
  • die Datenbank muss Anfragen auch bei fortlaufender Aktualisierung der Daten konsistent ausliefern können

Nach den ersten Laufzeittests hat sich als Anforderung zusätzlich herausgestellt, dass eine akzeptable Leistung der Datenbank nur dann zu erreichen ist, wenn sie darauf optimiert ist, geographisch zusammenliegende Daten schneller als verstreute Daten zu liefern.

Vorschau/Preview

OSM Server Side Script

Warum ist das Projekt für die OSM-Community interessant?/Why is this project interesting to the OSM community?

Komplexe Anfragen lassen sich bisher nicht mit vertretbarem Aufwand beantworten: alles, was über den Funktionsumfang der API und von XAPI hinausgeht, braucht einen eigenen GIS-Server mit Spiegeln der OSM-Daten auf dem Zielsystem. Für zahlreiche Geräte und Anwendungen ist das eine erhebliche Realisierungsschwelle. Solche Projekte werden nun möglich, da der Aufwand für die Abfragen (Vorhalten der Daten, Vorhalten der Software-Infrastruktur, Rechenleistung) nun von einem Server im Netz bereitgestellt werden.

Welche spezielle Software brauchst Du?/What special software will you need?

MySQL, Expat, Apache

Welche Ressourcen brauchst Du?/What resources will you need?

Im praktischen Betrieb benötigt OSM3S folgende Hardware-Ressourcen: für den Aktualisierungsprozess sollten mindestens 2 GB RAM permanent zur Verfügung stehen. Darüber hinaus ist jede Abfrage zur Zeit auf den Gebrauch von etwa 0,5 GB RAM begrenzt, so dass auf einem Server mit 4 GB RAM vier große Anfragen parallel bearbeitet werden können. Die beiden Datenbanken benötigen zur Zeit etwa 2 x 30 GB und wachsen mit der üblichen Geschwindigkeit des OSM-Datenbestands. Der eigentliche Engpass bei der Ausführung ist jedoch die Festplattenleistung, da der Aktualisierungsprozess nahezu permanent auf die Festplatte zugreift und die Laufzeiten der Abfragen ihrerseits von der Geschwindigkeit der Festplatten dominiert werden.

Wo ist der Source-Code?/Where is your source code?

Der Sourcecode soll ins OSM SVN. Zur Zeit ist der Sourcecode unter [1] zu finden.

Welche Daten brauchst Du?/What data do you need?

Die gesamte Planet.osm. Diese wird aber nur einmal benötigt, danach können durchgehend Diffs verwendet werden. In nächster Zeit soll der Code die replicate-diffs verwenden, aber dies ist noch nicht eingearbeitet.

Verwandte Projekte/Related Projects

vermutlich keine

Status/State

umgezogen