[Mapserver-DE] Geschwindigkeit

Arnulf Christl arnulf.christl at ccgis.de
Mon Okt 31 15:37:11 CET 2005


Marc Brünink wrote:
> Hallo,
> 
> ich frage mich, wie ich das Erzeugen der Karten etwas beschleunigen  
> kann. Im Moment habe ich 9 GB Shape Daten, die per shptree indiziert  
> wurden. Nun war mir der Gedanke gekommen, die Daten in ein PostGIS  
> System einzupflegen, um noch ein wenig Geschwindigkeit herauszupressen.  
> Wenn ich allerdings
> http://mapserver.gis.umn.edu/data2/wilma/mapserver-users/0301/ 
> msg00265.html
> lese, kommt PostGIS für mich eher nicht in Frage. Die Daten sind  
> statisch, mit den Attributen wir auch nicht viel  gemacht. Daher die  
> Frage: Lohnt sich der Umstieg? Die mail ist immerhin von 2003. Ist das  
> noch aktuell? Es scheint ja eher ein generelles Problem zu sein.

Hallo,
ich hatte mit Paul wegen dieser Frage schon ein paar Diskussionen, die 
letzte auf der OSG 05. Ich behaupte immer noch, dass Daten aus 
PG/PostGIS schneller sein können, als mehrere gekachelte Shape-Dateien. 
Vor allem, wenn es um sehr große Datenmengen geht. Prinzipiell ist es 
aber richtig, dass natürlich beim Shape-Dateizugriff nur ein 
Softwarepaket angeworfen wird, mit Datenbank aber zwei. Durch Fast-CGI, 
Festplatten Caches, viel RAM, etc. werden solche Überlegungen aber 
sowieso undurchschaubar.

Wirklich aussagekräftige und ausgeglichene Benchmarks sind deshalb nicht 
möglich, deswegen gibt es auch keine. Allein schon die Anforderung an 
die Hardware unterscheidet sich stark zwischen datenbank- und 
dateibasiertem Zugriff. Wenn man einen einzelnen Server verwendet, um 
beide Varainten zu testen berücksichtigt man z.B. den Architekurvorteil 
einer verteilten Installation nicht (z.B. Webserver auf extra Maschine). 
Wenn man ein sehr schnelles Netzwerk oder gar Zugriff auf ein SAN hat 
ändern sich wieder alle Grundparameter.

> Würde es helfen überflüssige Attribute aus den Daten zu entfernen? Wenn  
> ja, wie mache ich das dann?

In der Datenbank kann man die entsprechenen Spalten löschen, das ist 
sehr einfach. Für die Geschwindigkeit ist das nicht besonders relevant, 
da es die Indizes nicht betrifft, aber die Datenmenge reduziert sich 
natürlich. Nach umfangreichen Arbeiten in einer DB unbedingt nicht 
vergessen mit Vaccumm Analyze die Datenbank aufzuräumen.

> Gibt es sonst noch irgendwelche Tricks und Kniffe? Im Moment ist  
> Deutschland in 7 Arealen geteilt. Würde es vielleicht helfen, die Daten  
> in noch kleinere Areale zu zerlegen?

Wir empfehlen keine räumliche Zerlegung in Bereiche und erstellen lieber 
einen einzelnen, sauberen, indizierten zentralen Datenbankbestand. So 
ganz prinzipiell gesprochen...
Um was für Daten handelt es sich denn? Es kann sinnvoll sein, einen 
ausgedünnten Datenbestand für die Übersicht zu verwenden und erst beim 
reinzoomen auf Detaildaten zuzugreifen. Bei einer Deutschlandkarte z.B. 
können die Autobahnen als Schemazeichnung mit Punkten nur von Ausfahrt 
zu Ausfahrt mit reduzierter Stützpunktanzahl für die Übersicht verwendet 
werden. Erst wenn man unter Zoom xy kommt werden die Ausfahrten als 
eigene Kleeblätter und die Fahrbahnen als eigenen Geometrien 
dargestellt. Bei Shapedateien können die unterschiedlichen Zoomebenen 
dann als einzelne Dateien vorgehalten werden.

Wenn die Daten vollkommen statisch und ohne irgendwelche attributive 
Suche genutzt werden ist die Shape-Datei Variante aber auf jeden Fall 
diejenige, die mit dem geringsten Aufwand einhergeht, da man keine 
zusätzliche Installation der Datenbank benötigt. Sobald man etwas mehr 
machen will kommt man langfristig an der Datenbank aber eh nicht vorbei.

Es gibt weitere Fragen, die vor einer Architekturentscheidung gestellt 
werden sollten.
- Wie viele Zugriffe werden erwartet? (1-, 10-, 100Tausend / Tag)
- Wie viele Zugriffe erfolgen auf exakt den gleichen Ausschnitt? Das 
passiert wesentlich öfter als man denkt, vor allem, wenn die gesuchten 
Ausschnitte aus einer alphanumerischen Suche resultieren (Suche: Kölner 
Dom). Bei Stadtplandiensten erfolgen gut 70% aller Anfragen mehr als 
einmal, 60% aller Anfragen werden pro Monat mindestens 10 mal oder mehr 
angefordert. Bei solchen Zugriffsstatistiken macht es Sinn einen 
"intelligten" Proxy vorzuschalten, der getMap-Requests nur ein einzgies 
Mal wirklich an den Dienst schickt und alle weiteren Anfragen auf diesen 
Bereich aus dem Cache bedient. Das macht die Systeme bltzeschnell, 
ausser jeder einzelne Zugriff ist 100% eindeutig individuell und neu.

Andere Fragen betreffen die Ausgestaltung, müssen Label gesetzt werden 
(AUTO), werden Objekte mehrfach überlagert, um kartographische Effekte 
zu erzielen.

Viel Performance geht erfahrungsgemäß erst auf der letzten Meile flöten, 
also direkt vor und im Client. Wenn die Anbindung der Browser über 
Klingeldraht erfolgt, sollte man versuchen die Dateigröße zu minimieren 
(weniger Farbtiefe, anderes Format) oder differenziell nachzuladen 
(mehrere Ebeben, die parallel angefordert werden) und vor allem den JS 
und HTML Overhead im Client minimieren.

Vor einer Entscheidung würde ich also empfehlen die Anwendungsszenarien 
nochmal genau zu durchleuchten und dann bei einem Prototyp Meßpunkte zu 
setzen, die genaue Auskunft darüber geben wo im System der Flaschenhals 
eigentlich sitzt (Datenbank, MapServer, Webserver, Firewall, etc.).

hdh, Arnulf.

Hmmm - das sollte man mal als Thema im Wiki aufmachen, mir fallen 
dauernd noch mehr Sachen ein. Schade, dass MapServer kein eigenes Wiki 
mehr betreibt. Das neue Plone-CMS ist zwar schick, hat aber den üblichen 
Berechtigungs-Wasserkopf was dazu führt, dass keiner es benutzt.

> Vielen Dank
> Marc Brünink
> 
> _______________________________________________
> Mapserver-DE mailing list
> Mapserver-DE at freegis.org
> https://freegis.org/mailman/listinfo/mapserver-de




This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)