SQL

implmaturemainfull

Die Features sind in einer SQL-Datenbank gespeichert (PostgreSQL/PostGIS, GeoPackage, SQLite/SpatiaLite).

Limitierungen

Alle Bezeichner müssen nicht in Anführungszeichen gesetzt werden, d.h. die Bezeichner werden klein geschrieben.

Für PGIS gibt es die folgenden bekannten Einschränkungen:

  • Nicht alle CQL2-Ausdrücke werden in JSON-Spalten unterstützt.

Für GPKG gibt es die folgenden bekannten Einschränkungen:

  • Die Option linearizeCurves wird nicht unterstützt. Alle Geometrien müssen Geometrien gemäß
    dem Standard OGC Simple Feature Access sein.
  • Die CQL2-Funktionen DIAMETER2D() und DIAMETER3D() werden nicht unterstützt.
  • Arrays als Queryables werden für GeoPackage Feature Provider nicht unterstützt.
  • Queryables, die Werte in einem Array sind, werden für GeoPackage Feature-Anbieter nicht
    unterstützt.

Konfiguration

Optionen

NameDefaultBeschreibungTypSeit
connectionInfo
object
v2.0
sourcePathDefaults
Defaults für die Pfad-Ausdrücke in sourcePath, für Details siehe SQL-Pfad-Defaults.
object
v2.0
queryGeneration
Einstellungen für die Query-Generierung, für Details siehe Query-Generierung.
object
v2.0

Connection Info

Das Connection-Info-Objekt für SQL-Datenbanken wird wie folgt beschrieben:

NameDefaultBeschreibungTypSeit
dialect
PGIS
PGIS für PostgreSQL/PostGIS, GPKG für GeoPackage oder SQLite/SpatiaLite.
string
v2.0
database
Der Name der Datenbank. Für GPKG ein relativer Pfad zu einer Ressource mit Typ features im Store.
string
v2.0
host
Der Datenbankhost. Wird ein anderer Port als der Standardport verwendet, ist dieser durch einen Doppelpunkt getrennt anzugeben, z.B. db:30305. Nicht relevant für GPKG.
string
v2.0
user
Der Benutzername. Nicht relevant für GPKG.
string
v2.0
password
Das mit base64 kodierte Passwort des Benutzers. Nicht relevant für GPKG.
string
v2.0
schemas
[]
Die Namen der Schemas in der Datenbank, auf die zugegriffen werden soll. Nicht relevant für GPKG.
array
v2.0
pool
see below
Einstellungen für den Connection-Pool, für Details siehe Pool.
object
v2.0
driverOptions
{}
Einstellungen für den JDBC-Treiber. Für PGIS werden gssEncMode, ssl, sslmode, sslcert, sslkey, sslrootcert und sslpassword durchgereicht. Für Details siehe die Dokumentation des Treibersopen in new window.
object
v2.0
assumeExternalChanges
false
Annehmen, dass der verbundene Datensatz durch externe Applikationen geändert werden kann. Wenn diese Option auf true gesetzt wrid, werden z.B. Extents und Counts bei jedem Start oder Reload des Providers neu berechnet.
boolean
v4.0

Pool

Einstellungen für den Connection-Pool.

NameDefaultBeschreibungTypSeit
maxConnections
dynamic
Steuert die maximale Anzahl von Verbindungen zur Datenbank. Der Default-Wert ist abhängig von der Anzahl der Prozessorkerne und der Anzahl der Joins in der Types-Konfiguration. Der Default-Wert wird für optimale Performanz unter Last empfohlen. Der kleinstmögliche Wert ist ebenfalls von der Anzahl der Joins abhängig, kleinere Werte werden zurückgewiesen.
number
v2.0
minConnections
maxConnections
Steuert die minimale Anzahl von Verbindungen zur Datenbank, die jederzeit offen gehalten werden.
number
v2.0
idleTimeout
10m
Die maximale Zeit die eine Connection unbeschäftigt im Pool verbleibt. Bezieht sich nur auf Connections über der minConnections Grenze. Ein Wert von 0 bedeutet, dass unbeschäftigte Connections niemals aus dem Pool entfernt werden.
string
v2.0
shared
false
Wenn shared für mehrere Provider mit übereinstimmenden host, database und user aktiviert ist, teilen sich diese Provider einen Connection-Pool. Wenn eine der anderen Optionen in connectionInfo nicht übereinstimmt, schlägt der Start des Providers fehl.
boolean
v2.0

SQL-Pfad-Defaults

Defaults für die Pfad-Ausdrücke in sourcePath, siehe auch SQL-Pfad-Syntax.

NameDefaultBeschreibungTypSeit
primaryKey
id
Die Standard-Spalte die zur Analyse von Joins verwendet wird, wenn keine abweichende Spalte in sourcePath gesetzt wird.
string
v2.0
sortKey
id
Die Standard-Spalte die zur Sortierung von Reihen verwendet wird, wenn keine abweichende Spalte in sourcePath gesetzt wird. Es wird empfohlen, dass als Datentyp eine Ganzzahl verwendet wird.
string
v2.0
schema
null
Das Standard-Schema das Tabellen ohne Präfix in sourcePath vorangestellt wird.
string
v3.3

SQL-Pfad-Syntax

In dem Beispiel oben sind die wesentlichen Elemente der Pfadsyntax in der Datenbank bereits erkennbar. Der Pfad zu einer Eigenschaft ergibt sich immer als Konkatenation der relativen Pfadangaben (sourcePath), jeweils ergänzt um ein "/". Die Eigenschaft sourcePath ist beim ersten Objekt, das die Objektart repräsentiert, angegeben und bei allen untergeordneten Schemaobjekten, außer es handelt sich um einen festen Wert.

Auf der obersten Ebene entspricht der Pfad einem "/" gefolgt vom Namen der Tabelle zur Objektart. Jede Zeile in der Tabelle entsprich einem Feature. Beispiel: /kita.

Bei nachgeordneten relativen Pfadangaben zu einem Feld in derselben Tabelle wird einfach der Spaltenname angeben, z.B. name. Daraus ergibt sich der Gesamtpfad /kita/name.

Ein Join wird nach dem Muster [id=fk]tab angegeben, wobei id der Primärschlüssel der Tabelle aus dem übergeordneten Schemaobjekt ist, fk der Fremdschlüssel aus der über den Join angebundenen Tabelle und tab der Tabellenname. Siehe [oid=kita_fk]plaetze in dem Beispiel oben. Bei der Verwendung einer Zwischentabelle werden zwei dieser Joins aneinandergehängt, z.B. [id=fka]a_2_b/[fkb=id]tab_b.

Auf einer Tabelle (der Haupttabelle eines Features oder einer über Join-angebundenen Tabelle) kann zusätzlich ein einschränkender Filter durch den Zusatz {filter=ausdruck} angegeben werden, wobei ausdruck das Selektionskriertium in CQL2 Textopen in new window spezifiziert. Für Details siehe den Baustein Filter / CQL, welches die Implementierung bereitstellt, aber nicht aktiviert sein muss.

Wenn z.B. in dem Beispiel oben nur Angaben zur Belegungskapazität selektiert werden sollen, deren Wert nicht NULL und gleichzeitig größer als Null ist, dann könnte man schreiben: [oid=kita_fk]plaetze{filter=anzahl IS NOT NULL AND anzahl>0}.

Ein vom Standard abweichender sortKey kann durch den Zusatz von {sortKey=Spaltenname} nach dem Tabellennamen angegeben werden. Wenn dieser nicht eindeutig ist, kann {sortKeyUnique=false} hinzugefügt werden.

Ein vom Standard abweichender primaryKey kann durch den Zusatz von {primaryKey=Spaltenname} nach dem Tabellennamen angegeben werden.

Alle Tabellen- und Spaltennamen müssen "unquoted Identifier" sein.

Beliebige SQL-Ausdrücke für Werte sind möglich, z.B. um Funktionsaufrufe anzuwenden. So würde z.B. dieser Ausdruck [EXPRESSION]{sql=$T$.length+55.5} (anstatt nur length) einen fixen Wert zur Längen-Spalte addieren. Der Präfix $T$ wird durch den Tabellen-Alias ersetzt.

Query-Generierung

Optionen für die Query-Generierung in queryGeneration.

NameDefaultBeschreibungTypSeit
computeNumberMatched
true
Steuert, ob bei Abfragen die Anzahl der selektierten Features berechnet und in numberMatched zurückgegeben werden soll oder ob dies aus Performancegründen unterbleiben soll. Bei großen Datensätzen empfiehlt es sich in der Regel, die Option zu deaktivieren.
boolean
v2.0