Zeichenvorgänge abfragebasiert optimieren

Hintergrund

Eine optimale Performance mit einem sehr allgemein gehaltenen System zu erzielen ist nicht sehr trivial. Eine Optimierung die auf Basis einer Datenänderung erfolgt (z.B. Generalisierung), setzt sehr detailierte Kenntnisse über die Ausgangsdaten voraus. Dabei sind verschiedene Aspekte zu betrachten ... ist die Darstellungsgenauigkeit ausreichend für den beabsichtigten Zweck, sind Aggregierungen fachlich korrekt, ist die Aktualität relevant usw.

Solche Aufbereitungen erfolgen daher meist in separaten Prozessen die jeweils maßgeschneidert sind.

Möglichkeiten

Einige datenbankbasierte Datenquellen*1 unterstützen für diesen Zweck die Angabe von alternativen Abfragen, die nur bei Zeichenvorgängen verwendet werden.

Dafür kann in der Ebenendefinition das Argument alternativeRenderSources angegeben werden.

Dies bedeutet, dass für die Datenquelle immer eine primäre Quellangabe vorhanden ist die für alle Datenabfragen zum Einsatz kommt und nur bei Zeichenanforderungen eine der angegebenen alternativen Abfragen verwendet wird (wir gehen davon aus, dass Recherchen, Exporte etc. immer auf Basis des "besten" Datenbestand erfolgen).

Die Definition erfolgt über ein JSON Objekt mit folgendem Aufbau:


{
 "alternativeRenderSources": [
  {
   "title": "von 1000 bis 10000",
   "sourceSql": "SELECT * FROM LEVEL1",
   "geomColName": "geom",
   "scaleRange": {
    "minimum": 1000,
    "maximum": 10000
   }
  },{
   "title": "ab 10000",
   "sourceSql": "SELECT * FROM LEVEL2",
   "geomColName": "geom",
   "scaleRange": {
    "minimum": 10000,
    "maximum": 0
   }}
 ]
}

Es kann dabei ein Array oder ein Einzelobjekt definiert werden. Intern wird die Liste in der Reihenfolge der Definition durchgegangen und der erste passende Eintrag wird ausgewählt. Trifft keiner der Einträge zu, wird die primäre Quelle der Ebene verwendet.

Eigenschaften
  • title (): optionaler titel, für Ausgaben im Trace

  • sourceSql (primäreQuelle): alternative SQL Abfrage, diese wird in der gleichen Verbindung wie die primäre Quelle vorliegt ausgeführt (Benutzer, Server etc.)

  • geomColName (primäreGeom): Spaltenname mit der zu rendernden Geometrie

  • scaleRange: Maßstabsbereich, in dem diese Alternative zum Einsatz kommt (Objekt mit minimum / maximum, nicht optional (maximum 0 = unendlich)

Es muss mindestens sourceSql oder geomColName belegt werden. Es gilt: Für leere Werte wird der entsprechende Wert der primären Quelle verwendet.

Als Filterkriterium ist derzeit nur der Maßstab vorgesehen.

Zu beachten

Bedenken Sie bei Verwendung von Platzhalter in Abfragen, dass diese auch im jeweiligen sourceSql mit anzugeben sind (wenn nicht von der primären Quelle geerbt)

*1 Siehe Hinweise der jeweilige Datenquelle


Zuletzt geändert: 23.08.2017 17:33:31 (erstmals erstellt 03.08.2017)