Zum Hauptinhalt springen

Tile Updater

Warnung

Diese Beschreibung gilt nur für den neuen Tile Updater ab Version 24.1.59
Die Beschreibung des alte TileUpdaters (Mum.Geo.TileUpdate.exe) finden Sie hier https://help.mapedit.de/admin-guide/mapedit-tools/tile-updater/

Der Tile Updater kann für Oracle, Postgres und SQLite Datenbanken verwendet werden. SQLite Datenbanken sind im allgemeinen immer eine schlechte Alternative da diese keine zeitgleichen Zugriffe erlauben, verwenden Sie als alternative immer besser das kostenfreie Postgres.

Warnung

Es werden nur MapEdit und Topobase/Map3D Datenstrukturen unterstützt.

Was macht der Tile Updater?

Viele Kunden möchten die MapEdit Karte täglich auf dem aktuellen Stand haben. Für eine schnelle Performance werden vorgerenderte Kacheln und auch Live-gerenderte Kacheln verwendet. Beide Kacheln werden fest in die Verzeichnisse auf dem Server gespeichert und müssen daher aktualisiert werden.

Der TileUpdater untersucht ob Änderungen in der Datenbank geschehen sind und erzeugt diejenigen Kacheln neu, die von der Änderung betroffen sind. Dadurch wird vermieden, dass bei einer Datenänderung alle Kacheln neu erzeugt werden müssen. Ist die TileServer Konfiguration nur auf Liverendern definiert, dann löscht der TileUpdater nur "alte" Kacheln und erstellt keine neuen – das Erstellen von neuen Kacheln wird nur bei Zoomstufen automatisch angestoßen.

Es gibt zwei Möglichkeiten die Kacheln auf den neusten Stand zu bringen.

Die einfachste Möglichkeit ist z.B. jede Woche alle Kacheln zu löschen und dann wieder erzeugen zu lassen.

Nehmen wir an Sie haben nur eine kleine Linie neu gezeichnet, dann müssen Sie bei diesem verfahren trotzdem alle Kacheln neu erzeugen obwohl vielleicht nur eine Kacheln betroffen ist.

Ein andere Möglichkeit bietet der Tile Updater an.

Dieser versucht gezielt nur die Kachelbereiche zu löschen in denen auch Änderungen vorgenommen wurden um dann nur die wenigen benötigten Kacheln neu zu erzeugen.

Der Tile Updater installiert dazu Datenbank Trigger auf alle Tabellen. Sobald ein Datensatz geändert, neu erzeugt oder gelöscht wird registriert der Trigger diese Änderungen in einer Hilfstabelle (ME_TILEUPDATER_DIFF).

Wenn nun der Tile Updater, z.B. nächtlich oder wöchentlich ausgeführt wird werden nur die Betroffenen Kacheln neu erzeugt und nicht alle Kacheln.

Bedenken Sie das nicht nur Änderungen in der Geometrie den Inhalt einer Kacheln verändern können. Z.B. kann die Farbe einer Linie abhängig von einem Attribut eines Datensatzes dargestellt werden. Oder der Text eines Anschriebs (Labels) hat sich geändert.

Konfiguration

  • Indentifizieren Sie alle Datenbanken die Sie zum erzeugen der Kacheln verwendet haben. Diese stehen in Ihrem Darstellungsmodell oder Ihrer MapGuide/MapServer Konfiguration.

  • Legen Sie dann unter "Karten"->"Tile Updater" eine neue Konfiguration an. Drücken Sie rechts oben bei "Database Connections" auf den Knopf "Hinzufügen" und wählen Sie die Datenbank aus. Wählen beio Oracle und Postgres den Modus "Trigger (UTRA FAST)" aus. Wenn Sie mehrere Datenbanken verwenden wiederholen Sie diesen Vorgang mit jeder Datenbank.

  • Wählen Sie rechts unten bei "Maps" den "Tile Server" aus den Sie verwenden wollen und danach mittels "Hinzufügen" Die Tile Server Karte(n). Links können optional weitere Konfigurationen zur Optimierung vorgenommen werden. Beachten Sie das die Informationen die auf der linken Seite erscheinen jeweils zur der in der Liste gerade aktiv gewählten Datenbank gehören. Es ist ratsam im Register "Views" alle Views auszuschalten die nicht in der Karte verwendet werden wie z.B. Statitic Views etc da ansonsten der TileUpdater ggf länger dauert und unnötig Daten produziert. Besonderns bei SQLite Datenbanken ist es ratsam dies auch beim Registyer "Tabels" zu machen.

  • Drücken Sie nun einmalig auf "Initialize".

  • Fügen Sie zum Test einen neuen Geometrie Datensatz in einer Ihrer Tabellen hinzu. Gehen Sie dann auf das Register "Change Log" um zu sehen welche Datensätze geändert wurden.

  • Drücken Sie dann den "Run" Knopf um den Tile Updater ausführen.

Der TileUpdater erzeugt dann im Verzeichnis C:\inetpub\wwwroot\MumGeoData\TileUpdater\Invalidate Ihres Servers XML Dateien welche die Geometrie Bereich enthalten die neu zu rendern sind.

Am Ende des Vorgangs wird dann der Tile Server gestartet der dann mittels den XML Dateien die jeweils von der Änderung betroffenen Kacheln aktualisiert.

Im Log wird in der Spalte "Render Date" bei den bereits ausgeführten Datensätze das Datum vermerkt. Sie sehen diese Datensätze wenn sie den "Unrendered only" Knopf deaktivieren.

Mit dem ReRun Knopf können Sie ggf das Render wiederholen wenn z.B. der TileServer fehlgeschlagen ist.

Warnung

Beachten Sie das wenn Sie mehrere Konfigurationen unter "Karten"->"Tile Updater" anlegen das eine Datenbank nicht mehrfach verwendet werden darf! D.h. Sie müssen alle Tile Server Karten welche die gleiche Datenbank verwenden in die gleiche Konfiguration aufnehmen.

Das ist so weil nach dem ausführen des Tile Updaters auf eine Datenbank die Objekte der Datenbank dann als bereits bearbeitet markiert werden und somit bei einer anderen Konfiguration nun nicht mehr ausgeführt werden!

Ausführen des Tile Updaters mittel Windows Scheduler

Der Tile Updater kann entweder händisch aus dem AppBuilder ausgeführt werden oder mittels der Datei "MapEdit.Executor.exe" als Task in den Windows Scheduler eingebunden werden um den Tile Updater z.B. jede Nacht ausführen zu lassen.

Um eine optimale Geschwindigkeit zu erreichen sollte der "MapEdit.Executor.exe" immer auf dem MapEdit Server ausgeführt werden da dann weniger Daten über das Netzwerk gesendet werden müssen.

Sie können diesen aber auch auf jeder anderem Maschine ausführen auf der auch der AppBuilder lauffähig ist. Davon ist jedoch abzuraten wenn Sie sehr sehr große Datenmengen verwalten.

Um den MapEdit.Executor.exe zu nutzen drücken Sie den Knopf "Create Executor Token" und folgenden Sie den dort aufgeführten Anweisungen.

Fügen Sie in der MapEdit.ini Datei den die CommandToken Zeile hinzu die Sie in der Ausgabe sehen. Dieser Token ist nur für diese aktuelle Konfiguration gültig. Der Token muss erneuert werden wenn der Name der Konfiguration umbenannt wird oder wenn wenn das Login des angemeldeten Administrator sich ändert.

Wenn Sie mehrere Konfiguration haben nennen Sie diese CommandToken2, CommandToken3 usw.

Starten Sie nach dem ändern der MapEdit.ini den AppBuilder unbendingt neu!

Binden Sie dann den MapEdit.Executor.exe in den Windows Task Scheduler ein. Den vollen Pfad zum MapEdit.Executor.exe finden Sie im Ausgabe Fenster. Als Parameter muss "CommandToken=Token Nummer" angegeben werden.

CommandToken=1

Wenn Sie mehrerer Token haben dann die jeweilige Nummer.

Alte XML Dateien vom Server löschen

Mit der Option "Clear XMLs every X days" können Sie festlegen nach wieviel Tagen die XML Dateien im Verzeichnis "C:\inetpub\wwwroot\MumGeoData\TileUpdater\Invalidate" gelöscht werden sollen.

Hinweis

Diese löschen findet erst beim nächsten Ausführen des TileUpdaters statt. Der TileUpdater löscht dann alle Dateien die zu diesem Zeitpunkt älter als X Tage sind. Wenn der TileUpdater nicht ausgeführt wird werden die Dateien nicht gelöscht!

Alte Log Einträge automatisch leeren

Mit der Option "Clear Log every X days" können Sie festlegen nach wieviel Tagen Log Eintrage die bereits ausgeführt wurden gelöscht werden sollen.

Es kann hilfreich sein bereits ausgeführte Log Eintrage kurzfristig bei zu behalten um im Fehlerfall das Rendern der Tiles händisch wiederholen zu können.

Rendern wiederholen (ReRun)

Mit dem "ReRun" Knopf können Render Vorgänge wiederholt werden. Die ist jedoch nur möglich wenn die Log Einträge noch vorhanden sind.

Erweiterte Konfiguration

Das Programm versucht immer selbst bereits die beste Konfiguration zu setzen.

Eine weitere Konfiguration ist optional und kann von Profis dazu genutzt werden die Geschwindigkeit des Tile Updaters zu optimieren.

Sie müssen sich dazu aber sehr gut mit Ihren Datenstruktur auskennen und genau wissen was sie tun da bei einer Fehlkonfiguration ansonsten ggf Kacheln nicht erneuert werden.

Register Tabellen

Hier erscheinen alle Tabellen die eine FID oder ID und Geometrie Spalte haben.

Sie können zum optimieren der Geschwindigkeit hier alle Tabellen ausschalten die Sie nicht in ihrer Grafik benutzen. Bedenken Sie das eine Tabelle oder Daten derer ggf in einem View genutzt werden der wiederum in der Grafik genutzt wird.

Vergessen Sie nicht ausgeschaltete Tabellen wieder einzuschalten wenn Sie neue Layer in Karten hinzufügen die Sie dann doch wieder benötigen!

Warnung

Tabellen die keine Numerische FID oder ID haben können mit dem TileUpdater nicht genuzt werden.

Views

Hier erscheinen alle Views die eine Geometrie Spalte haben. Views die nicht in der Grafik genutzt werden sollten Sie immer auf "No action" und "Locked" setzen.

Diese Option erhöht die Geschwindigkeit besonders bei großen Datenmengen erheblich, sollte aber nur angewendet werden wenn wenn der View auch wirklich nicht in der Grafik verwendet wird.

Das Verarbeiten der Views mit der Standard Option "UseHash" macht das Programm langsam da bei dieser Option bei jedem ausführen des Tile Updaters alle Datensätze gelesen werden müssen und mit dem letzten Zustand verglichen werden muss und Informationen zum Zustand gespeichert werden müssen.

Beachten Sie das wenn Sie neue Views anlegen, das das Programm diese automatisch immer auf "UseHash" setzt außer es handelt sich um eindeutige Utility oder Label Views die nur zwei Tabellen beinhalten und keine weiteren Tabellen.

Weitere Informationen für Insider

Auf Ihrem MapEdit Server werden im Verzeichnis

C:\inetpub\wwwroot\MumGeoData\TileUpdater\Invalidate

XML Dateien abgelegt. Diese Dateien werden an den Tile Server gesendet und enthalten die Geometriebereiche die sich geändert haben.

Beachten Sie das hier keine Tabellennamen oder FIDs stehen da Geometrie Bereiche die sich überlappen vom Programm kombiniert werden um die Dateien so klein wie möglich zu halten. Die Information welche FID und Tabellen sich geändert haben finden Sie in der Tabelle ME_TILEUPDATER_LOG.

Die Dateien sind jeweils maximal 5MB gross, danach wird eine neue Datei erzeugt.

Der TileUpdater braucht zu lange, was kann ich tun.

Entfernen Sie bei allen Views und Tabellen die Sie nicht in der Grafik verwenden den haken "Aktive".

Verwenden Sie bei Oracle und Postgres immer den Modus "Trigger (UTRA FAST)".

Datenbankverbindung hinzufügen

Wenn Sie hier eine Datenbankverbindung nicht sehen bedeutet dies das diese bereits in einer anderen Tile Server Konfiguration verwendet wird. Eine Datenbankverbindung darf nicht in mehreren Tile Server Konfiguration verwendet werden da sich sonst die Daten gegenseitig ueberschrieben.

Beim hinzufügen einer Datenbank werden die Tabellen ME_TILEUPDATER_LOG und ME_TILEUPDATER_DIFF hinzugefügt und Trigger für alle Tabellen erzeugt.

Use External Hash Database

Hiermit kann die Tabelle ME_TILEUPDATER_DIFF in eine separate Datenbank ausgelagert werden.

Die Datenbank muss nicht vom gleichen Typ sein. d.h. wenn Ihre Daten in einer Oracle Datenbank sind kann die "Hash Datenbank" in einer SQLite oder Postgres Datenbank liegen.

Mit diesem vorgehen können die Daten der Tabelle ME_TILEUPDATER_DIFF ausgelagert werden. Die einfüge Geschwindigkeit von SQLite und Postgres ist teilweise schneller als die von Oracle.

Legen Sie mit dem AppBuilder eine neue leere Datenbank an. Die Datenbank muss mit dem Namen "_TILEUPDATER" enden!

Wählen Sie diese Datenbank dann bei "Use External Hash Database" aus.
Beim auswählen wird automatisch die Tabelle ME_TILEUPDATER_DIFF in der Datenbank angelegt.

Warnung

Achten Sie darauf diese Datenbank nicht in mehreren Konfigurationen zu verwenden sondern immer nur in einer! Ansonsten werden falsche Ergebnisse erzeugt.

Initialize Hash

Füllt bzw aktualisiert die Tabelle ME_TILEUPDATER_DIFF mit Werten ohne das Kacheln neu erzeugt werden. Mit diesen Werten kann erkannt werden ob sich Datenensätze in Views (oder bei SQLite auch in Tabellen) verändert haben.

Warnung

Diese Funktion sollte außer bei initialen Aufsetzen nicht ausgeführt werden. Wird diese doch ausgeführt dann denkt das Programm das keine Änderungen vorhanden waren und führt kein rendern aus.

Clear Hash

Löscht den Inhalt der Tabelle ME_TILEUPDATER_DIFF Hash Codes der Views.

Clear Log

Löscht den Inhalt der Tabelle ME_TILEUPDATER_LOG

Clean

Löscht aus der Tabelle ME_TILEUPDATER_LOG alle Datensätze die bereits zum neu erzeugen von Kacheln verwendet wurden.

Test Run

Führt den Tile Updater aus, fügt aber kein Render Datum ein.

Test Run (no Render)

Gleich wie "Test Run" führt aber am ende nicht den Tile Server aus. D.h. es werden keine Kacheln neu gerrendert.

Tables

Wenn Sie eine Tabelle nicht in der Karte verwenden können Sie diese hier ausschalten. Damit verhindern Sie das der Tile Updater unnötig die Änderungen an der Tabelle analysiert und unnötig Kacheln aktualisiert.

Views

Bei Tabellen ist es einfach über die Trigger herauszufinden welche Datensätze sich geändert haben.
Bei Views gibt es leider keine Trigger und hier ist das ganze nicht so einfach.

Das Programm versucht immer automatisch die optimalste Konfiguration selbst zu finden.

Wenn Sie selbst konfigurationen vornehmen sollten Sie immer den Schalter "Lock" einschalten. Dieser verhindert das Ihre Konfiguration vom Programm überschrieben wird.

Das Programm bietet für Views 3 verschiedene Möglichkeiten an.

Active

Wenn Sie eine View nicht in der Karte verwenden können Sie diesen hiermit ausschalten. Damit verhindern Sie das der Tile Updater unnötig die Änderungen an der Tabelle analysiert und unnötig Kacheln aktualisiert. Es wird außerdem dann weniger Speicherplatz für diese zusätzlichen Analyse Informationen benötigt.

Methode - Hash

Wird diese Methode verwendet, dann werden in der Tabelle ME_TILEUPDATER_DIFF zu jedem Datensatz des Views Informationen gespeichert um festzustellen ob sich etwas an den View Daten geändert hat.

Hinweis

Bei SQLite wird diese Methode auch für Tabellen verwendet.

Beachten Sie das dies zusätzlichen Speicherplatz benötigt und das dieser Vorgang bei großen Datenmengen das ausführen des Tile Updaters extrem verlangsamen kann.

Verwenden Sie stattdessen wenn möglich immer besser die Methode "Launch". Diese benötigt keinen zusätzlichen Speicherplatz und ist wesentlich schneller es wird zur Konfiguration aber Expertenwissen benötigt.

Durch die Option "Use External Hash Database" (auf der Rechten Seite) kann die Tabelle ME_TILEUPDATER_DIFF optional in eine andere Datenbank ausgelagert werden wenn Sie ihre Datenbank nicht mit diesen Informationen belasten wollen. Bei Oracle Datenbanken kann es ggf. auch Geschwindigkeitsgewinne geben wenn man diese in eine Postgres oder SQLite Datenbank auslagert.

Methode - Launch

Hier können Relationen festgelegt die auslösen (launch) das ein Datensatz als geändert erkannt wird und der Geometrie Bereich aktualisiert werden muss.

Diese benötigt keinen zusätzlichen Speicherplatz und ist wesentlich schneller als Hash.

Verwenden Sie diese Methode nur wenn Sie wissen was sie tun.

Launch Table = Tabelle die die Methode auslöst Launch Filter = Filter der via der Launch Table die Geometry aus der Tabelle Launch Geometry (Table) holt. Launch Geometry (Table) = Tabelle in der die Geomtrie gefunden wird.

Der Ablauf: Das Programm liest die Tabelle ME_TILEUPDATER_LOG in dieser stehen die geänderten Datensätze. Wenn das Programm auf eine Tabelle stößt die auch bei "Launch Table" steht, dann nimmt es den Primarschlüssel der Tabelle (FID/ID) und ersetzt den Wert {KEY} im Launch Filter mit dieser FID/ID. Danach wird mit diesem Filter die "Launch Geometry" abgefragt und die Geomtrie und wenn vorhanden die FID in die Log Tabelle eingetragen.

Beispiel: Ein View enthält die Attribut Tabelle BAUM und eine Punkt Geometrie Tabelle PUNKT mit einem Feld FID_ATTR in dem ein verweis auf die BAUM Tabele steht.

Wird nun ein Datensatz in der Tabelle Baum geändert dann wird dieser in die LOG Tabelle geschrieben. Durch den "Launch" kann nun ausgelöst werden das wenn ein Baum Datensatz verändert wird, das nun die Geometrie aus PUNKT neu gerendert wird.

Nehmen wird an die Farbe des Baumes in der Karte ist abhängig von einem Attribut in der Tabelle BAUM. Dann wird ohne einen Launch (oder Hash) Methode die Kachel nicht neu gezeichnet da sich ja die Geometrie in Tabelle PUNKT nicht geändert hat.

Methode - Auto

Wenn bei Methode eine der Auto Methoden eingestellt ist (Auto NoAction/Auto Launch/Auto Hash) dann bedeutet das, das die Methode vom Programm automatisch gewählt wurde. Hier können Sie sehen welche Methode das Programm benutzt.

Dies wird bei jedem lauf vom Programm neu gesetzt da Views sich ändern können oder neue dazu kommen können.

D.h. wenn Sie explizit eine Methode wählen wollen müssen sie Hash oder Launch wählen und keine der Auto Methoden.

Was passiert beim hinzufügen einer Datenbank zu der Konfiguration

Beim hinzufügen werden die Tabellen ME_TILEUPDATER_LOG und ME_TILEUPDATER_DIFF erzeugt und auf jede Tabelle der Datenbank wird ein Trigger erzeugt.
Auf System Tabellen und Tabellen die keine FID/ID haben werden keine Trigger erzeugt.

Dieser Trigger schreibt wenn ein Datensatz erzeugt, geändert oder gelöscht wird einen Datensatz in die Tabelle ME_TILEUPDATER_LOG.

Der Datensatz enthält den Tabellen Namen, die FID/ID, das Änderungsdatum und den MBR der Geometry vor und nach der Änderung.

Bitte beachten

Bei SQLite werden keine Trigger erzeugt, diese werden intern wie Views behandelt.

Die Tabelle ME_TILEUPDATER_DIFF wird für Views benötigt oder wenn keine Trigger verwendet werden soll,.

Was passiert beim entfernen einer Datenbank aus der Konfiguration

Entfernt alle Tile Updater Trigger sowie die Tabellen ME_TILEUPDATER_LOG und ME_TILEUPDATER_DIFF.

Was ist wenn ich Tabellen hinzufüge?

Beim Öffnen der Konfiguration oder Ausführen des Tile Updaters werden fehlende Trigger automatisch angelegt. Beachten Sie das Sie ggf alle Kacheln neu Render müssen wenn Sie neue Tabellen anlegen danach nicht vor dem einfügen von Datensätzen die Tile Updater Konfiguration öffnen damit die Trigger angelegt werden.

Unterschiede zum "alten" Tile Updater vor Version 24.1.

Der alte Tile Updater funktionierte nur mit Oracle und MapGuide. Der neue funktioniert auch mit Postgres und SQLite und ist unabhängig von MapGuide und kann auch mit MapServer oder anderen genutzt werden.

Bei Änderungen am Datenmodel oder der Map Guide Darstellung musste beim alten Tile Updater jeweils der Tile Updater (deren Dateien) zurück gesetzt und alles neu gerendert werden. Dies ist beim neuen TileUpdater nicht mehr notwendig.

Es gibt beim neuen TileUpdater keine .geom und .hash Dateien mehr. Für Tabellen benötigt es diese Daten wegen den Triggerm nun nicht mehr und damit ist die Ausführungsgeschwindigkeit höher. Bei Views werden diese Informationen statt in Dateien, in der Tabelle ME_TILEUPDATER_DIFF abgelegt.

Der alte TileUpdater musste zwingend auf dem MapEdit Server ausgeführt werden. Der neue optional auch auf irgend einem Rechner laufen.

Im neuen TileServer stehen in den XML Dateien nur noch die reinen Geometrie Bereiche. Hier stehen keine Tabellenamen oder FIDs etc. Die Informationen welche Feature sich geändert haben stehen jeweils in der ME_TILEUPDATER_LOG Tabelle.