Disy Tech-Blog

SQLite und SpatiaLite

SQLite und SpatiaLite

Das serverlose Datenbank‑Duo

06.10.2015 | Roman Wössner

Weit entfernt vom Betrieb großer Enterprise-Datenbanklösungen und umfangreicher Client-Server-Architekturen bewegt sich SQLite, eine leichtgewichtige, modulare und serverlose SQL-Datenbank. SQLite hat sich mittlerweile in einigen Bereichen der IT und in vielen allgemein bekannten Browsern und Betriebssystemen etabliert.

Im Vergleich dazu ist sein kleiner Bruder SpatiaLite – der etwa analog zu PostgreSQL und PostGIS eine SQLite-Datenbank um räumliche Objekttypen und Funktionalitäten ergänzt – noch in den Kinderschuhen. Dennoch ist der Einsatz von SQLite und SpatiaLite in kleinen, unabhängigen Szenarien sinnvoll.

In einer kleinen Beitragsfolge wird die Technologie und die Nutzung erklärt und es werden erste Erfahrungen reflektiert.

Wie nutze ich eine SQLite-Datenbank in meiner Anwendung?

Im Betrieb kann ein bis zu 140 TB großer .sqlite-Kontainer aus dem lokalen Dateisystem einer Anwendung zusammen mit einem SQLite-Treiber zu einer Datenbank instanziiert werden (vgl. Abbildung).

Ein solcher SQLite-Treiber, der für die wichtigsten Programmiersprachen zur Verfügung steht, stellt einem Softwareentwickler die gesamten Funktionalitäten der nativen SQLite-C-Bibliothek mittels entsprechender Bindings zur Verfügung. Die Datenbank wird damit quasi im Prozessraum der nutzenden Anwendung bereitgestellt und man kann über eine standardisierte ODBC- bzw. JDBC-Schnittstelle auf die Daten im Dateisystem zugreifen.

Der Funktionsumfang der SQLite-Bibliothek selbst umfasst nahezu den gesamten SQL-92 Standard. Ausnahmen sind beispielsweise RIGHT und FULL OUTER JOINs, die vollständige Unterstützung für ALTER TABLE Statements oder editierbare Views. Geodaten können mit SQLite alleine noch nicht verwaltet werden. Hierzu bedarf es der Erweiterung durch SpatiaLite.

Instanziierung einer SQLite-Datenbank
Instanziierung einer SQLite-Datenbank

Wie wird aus einer SQLite- eine SpatiaLite-Datenbank?

Um von den räumlichen Funktionalitäten von SpatiaLite Gebrauch machen zu können, muss ein entsprechender Treiber mit nativer SpatiaLite C-Bibliothek verwendet werden. Dieser stellt einerseits den Umgang mit Geometrie-Objekten und andererseits den Umgang mit dem SpatiaLite-spezifischen Metadatenschema innerhalb von SQLite-Kontainern sicher.

Abgeleitet von der OGC Simple Feature Spezifikation OGC-SFS werden beispielsweise in der Metadatentabelle geometry_columns Informationen zu Geometrietyp, Koordinatenreferenzsystem und Geometrie-Dimensionen zu jeder Geometriespalte in der SpatiaLite-Datenbank vorgehalten.

Ausblick

Die Funktionsweise eines SpatiaLite-JDBC-Treibers für Java-Anwendungen und die Herausforderungen, die sich für das Build-System von Cadenza mit der Unterstützung von SpatiaLite ergeben, werden im nächsten Beitrag dieser Serie genauer beleuchtet.