Verstehen Ihrer Daten

Beim Erstellen einer „Point In Polygon“-Lösung ist es wichtig zu verstehen, wie sich Ihre Daten auf die Leistung und den von Ihnen gewählten Spectrum-Vorgang auswirken und welche einschränkenden Faktoren Ihre Daten haben.

Wo sind Ihre Daten zu finden? Sie sollten wissen, wo sich Ihre Daten befinden und welchen Datentyp Sie für Ihre Lösung nutzen. TAB-Dateien im Dateisystem führen zu einer anderen Leistung Ihres Vorgangs als Daten in einem DBMS. Spectrum delegiert die Verarbeitung bestimmter Vorgänge (räumliche Verbindungen) an die Datenbank (z. B. Oracle und SQL Server), wodurch die Leistung gesteigert wird. Beispielsweise Vorgänge wie den folgenden:

Select a.id, b.id from flood_plane a, customers b where MI_Contains(a.geom, b.geom)

Was ist das Geometrieformat? Es gibt einen Leistungsunterschied, je nachdem, ob Sie ein natives MapInfo-Geometrieformat oder eine Datei mit x/y-Format verwenden (z. B. CSV-Datei mit Breitengrad-/Längengradwerten). Um die Leistung zu steigern, ziehen Sie die Verwendung eines x/y-Formats anstelle eines nativen MapInfo-Geometrieformats in Betracht.

Sind Ihre Daten statisch oder variabel? Wenn Sie wissen, dass sich Ihre Daten nicht ändern (alle oder nur einige Ihrer Daten) und Sie den „Query Spatial Data“-Vorgang verwenden, gibt es eine Konfigurationsoption beim Erstellen Ihrer benannten Ressourcen, die die Leistung wesentlich steigern kann. In Spectrum wird diese als Veränderlichkeit bezeichnet. Die Veränderlichkeit ist bei allen Ressourcen standardmäßig auf „true“ gesetzt. Dies bedeutet, Spectrum geht davon aus, dass sich die Daten jederzeit ändern können, und muss die Daten jedes Mal beim Zugriff überprüfen, um zu bestimmen, ob sie sich geändert haben, und um zu entscheiden, ob neue Daten geladen werden müssen.

Welche Auswirkungen hat die Veränderlichkeit also auf „Point In Polygon“-Vorgänge? Wenn die Veränderlichkeit auf „true“ gesetzt ist und selbst wenn sich die Datenquelle nicht geändert hat, verringert allein das Überprüfen der Ressource die Leistung. Wenn Sie wissen, dass sich Ihre Daten nicht ändern werden und Leistung eine wichtige Anforderung ist, deaktivieren Sie die Veränderlichkeit. Wenn die Leistung ein Problem ist und Sie wissen, dass sich einige Ihrer Daten ändern werden (etwa Client-Listen oder Messpunkte), andere Ihrer Daten wiederum nicht (Parzellen, ländliche Gebiete oder Verkaufsgebiete), dann stellen Sie sicher, dass die Veränderlichkeit bei so vielen Ihrer statischen Daten wie möglich deaktiviert ist. Dadurch wird die Leistung gesteigert. Weitere Informationen zur Veränderlichkeit und wie Sie diese Einstellung für Ressourcen ändern können, finden Sie unter Volatilität von Datenquellen.

Verwenden Sie TAB-Dateien? Bei der Verwendung von TAB-Dateien haben Sie die Möglichkeit, einen Pool von offenen Dateihandles beizubehalten, um das wiederholte Öffnen zum Lesen der Datei zu vermeiden. Spectrum Spatial verwendet den Dateihandle-Pool für native TAB-Dateien, deren Veränderlichkeitseinstellung „false“ ist. Zu den nativen TAB-Dateien zählen Extended und Seamless TAB-Dateien. Alle Tabellen in der Spectrum Spatial-Datenbank sind standardmäßig veränderlich (true). Veränderlichkeit für native TAB-Dateien bedeutet, dass sich das Schema jederzeit ändern kann. Um den Vorteil dieser Leistungsoptimierung zu nutzen, legen Sie im Spatial Manager für die Veränderlichkeitseinstellung „false“ fest. Allgemein wird für die Veränderlichkeit die Einstellung „false“ empfohlen, wenn sich die Daten nur zu bestimmten Zeiten oder gar nicht ändern.

Der Datei-Handle-Pool ist standardmäßig aktiviert. Um ihn zu deaktivieren, rufen Sie \server\modules\spatial\pool-tab.properties auf, und legen Sie für tab.cache.enabled „false“ fest. Sie müssen den Server neu starten, damit die Einstellung wirksam wird.

Die Konfiguration des Dateihandle-Pools erfolgt über die Datei „tab-file-handle-pool.properties“, die sich ebenfalls im Ordner „\server\modules\spatial“ befindet. Zu den Eigenschaften gehören die maximale Anzahl an Handles, die dem Pool zugewiesen werden können (maxTotal), die maximale Anzahl von zugewiesenen Handles pro Datei (maxTotalPerKey) und die minimale Zeitspanne, die sich ein Datei-Handle ungenutzt im Pool befinden kann, bevor er geschlossen wird (minEvictableIdleTimeMillis).

Bei nahtlosen Tabellen gibt es eine allgemeine Formel zur Leistungsmaximierung des Dateihandle-Pools. Genauer gesagt müssen Sie die maximale Anzahl von Handles berechnen, die dem Pool zugewiesen werden können (maxTotal). Führen Sie die folgenden Schritte zur Berechnung von „maxTotal“ aus:

  1. Suchen Sie die nahtlose Tabelle mit den meisten Untertabellen, und notieren Sie sich die Anzahl der Untertabellen (#ofsub-tables).
  2. Bestimmen Sie die Anzahl der verwendeten Threads (#ofthreads).
  3. Die Formel lautet: (3 + (3 × #ofsub-tables)) × #ofthreads = maxTotal. Wenn Ihre nahtlosen Tabellen keine .ind-Dateien enthalten, lautet die Formel: (2 + (2 × #ofsub-tables)) × #ofthreads = maxTotal.

Wenn Sie beispielsweise die gesamte nahtlose USA-Tabelle verwenden, gibt es .ind-Dateien, 54 Untertabellen, und Sie verwenden 8 Threads. Die Berechnung für „maxTotal“ lautet: (3 + (3 × 54)) × 8 = 1320.

Anmerkung: Je nachdem, welches Betriebssystem Sie nutzen, kann es vorkommen, dass Ihnen die offenen Dateihandles ausgehen.
Anmerkung: Der Wert von maxTotalPerKey sollte auf die Anzahl der von Ihnen verwendeten Threads erhöht werden, sofern Sie mehr als 10 Threads verwenden.