optimizing mapbender-database

"Jäger, Frank \(KRZ\)" F.Jaeger at KRZ.DE
Tue Oct 10 11:06:28 EDT 2006


Scroll down for english.

DE:

Hallo Freunde des Mapbender,
es ist mir aufgefallen, dass ...
(1)
WMS-Dienste, die aus allen GUIs entfernt wurden nicht mehr in den Admin-GUIs von Mapbender zu sehen sind, aber trotzdem noch in der Datenbank gespeichert sind.
Auch in den Detail-Tabellen 'wms_format' und 'layer' sind noch Datensätze zu diesen nicht mehr benötigten und 'unsichtbaren' WMS gespeichert. 

(2)
Ein WMS-Dienst sollte nur EINMAL hochgeladen werden (get capabilities).
(Am besten zunächst in eine wms-Container-GUI (Name = 'wms_*') ohne Elemente.
Von dort aus sollte der WMS in andere GUIs kopiert werden. Dabei wird nur die vorhandene ID nochmals verknüpft. 
Manchmal passiert es jedoch, dass eine GUI mehrfach hochgeladen wird. Mapbender bzw. die Datenbank vergibt dann mehrere IDs für den gleichen Dienst. Das kann zur Verwirrung beim Update führen und sollte deshalb vermieden werden.

Um beide Fälle zu finden, dient das beiliegende SQL-Script (Anlage).

Hier ein Beispiel auf Basis der Datenbank, wie sie mit Mapbender 2.4 ausgeliefert wird. Auch dort sind schon solche "Leichen" vergraben.
Die Views aus dem Script (Anlage) wurden vorher in die Datenbank eingetragen (pgAdmin III).

~$ psql -d mapbender -U ....
...
mapbender=# select * from wms_lost;
 wms_id | wms_version |    wms_title     |                                              wms_upload_url
--------+-------------+------------------+----------------------------------------------------------------------------------------------------------
    855 | 1.1.1       | World Map        | http://www2.demis.nl/wms/wms.asp?wms=WorldMap&
    907 | 1.1.0       | NRW: TK100 Farbe | http://www.geoserver.nrw.de/GeoOgcWms1.3/servlet/TK100?REQUEST=GetCapabilities&VERSION=1.1.0&SERVICE=WMS
(2 Zeilen)

Ergebnis: Die ausgelieferten WMS mit den IDs '855' und '907' werden in keiner GUI benutzt. Sie können also gelöscht werden.

mapbender=# DELETE FROM wms WHERE NOT EXISTS (SELECT * FROM gui_wms WHERE gui_wms.fkey_wms_id = wms.wms_id);
DELETE 2
mapbender=#


Doppelte WMS kommen in dieser "frischen" Datenbank nicht vor. Unsere Produktions-DB ist jedoch mal mit Mapbender 2.1 angelegt worden und später auf 2.2.3 und jetzt auf 2.4 geändert worden.
Dabei sind möglicherweise per Update-Script WMS dazu geladen worden, die unter anderer ID bereits enthalten waren.
Bei der täglichen Arbeit sind auch eigene MAP-Dateien getestet worden. Dabei wurden WMSse mal entfernt (also unsichtbar) und später neu hochgeladen.
Die Abfrage "wms_multi_in_gui" liefert deshalb 135 Zeilen.

Um das aufzulösen, muss man sich je WMS für eine ID entscheiden (z.B. die am häufigsten benutzte?), die anderen manuell entfernen (admin/remove) und durch Kopien ersetzen.
Danach können die dann unbenutzten Duplikate mit dem SQL-Delete gelöscht werden.

Der tägliche Dump zur Datensicherung für unsere Mapbender-DB hat sich durch diese Kur um ca. 20% verkleinert. Das war überflüssiger Datenmüll.


W A R N U N G :
Bitte genau überlegen und vorher eine Datensicherung machen.
Zunächst an einer Test-Installationen oder Kopie ausprobieren.
Vielleicht ist es sinnvoll, einen WMS doppelt zu führen, wenn er mit unterschiedlichen Versionen hochgeladen wurde (1.1.0 und 1.1.1). 

--> ANLAGE


EN:

Hello friends of Mapbender,
WMS that had been removed from all GUIs are "invisible" for Mapbender-Admin but are still in the database.
Unused Entries are in the table 'wms' and in related tables 'layer' and 'wms_format'.
You can find them and delete them with SQL-Views from the script 'mapbender_optimize.sql'.

If some WMS had been uploaded ('get capabilities') more then once, then for identical URLs are different IDs in the database.
That may cause problems on updating this WMS.

If these WMS are used in different GUIs with different IDs you have to sort this manually. Chose one wms-ID to copy to all GUIs, remove the other wms-IDs from the GUIs.
Leave at last one wms-ID for one wms-url.
Delete the unused IDs with:

   DELETE FROM wms 
   WHERE NOT EXISTS 
     (SELECT * 
      FROM gui_wms 
      WHERE gui_wms.fkey_wms_id = wms.wms_id);


SQL-Views in the script helps you to find the GUIs with multiple wms. 

There are already 2 unused WMS in the database shipped with Mapbender 2.4.
There are many more after working with Mapbender for some weeks.
Our Database was reduced by 20% of waste.


BE CAREFULL!
Backup your Database before you start.
Try first with a copy of your Database.
Take care of WMS with same URL but different Versions (1.1.0 - 1.1.1.).



Mit freundlichen Grüßen
Frank Jäger

Kommunales Rechenzentrum
Minden-Ravensberg/Lippe

-------------- next part --------------
A non-text attachment was scrubbed...
Name: mapbender_Optimize.sql
Type: application/octet-stream
Size: 4563 bytes
Desc: mapbender_Optimize.sql
Url : http://lists.osgeo.org/pipermail/mapbender_users/attachments/20061010/1386dc70/mapbender_Optimize.obj


More information about the Mapbender_users mailing list