Note: these pages are no longer maintained

Never the less, much of the information is still relevant.
Beware, however, that some of the command syntax is from older versions, and thus may no longer work as expected.
Also: external links, from external sources, inside these pages may no longer function.



SpatiaLite logo

Technical Introduction

2011 January 28

Table of Contents Next Slide

Quick Techical Intro: in technical terms SpatiaLite is a Spatial DBMS supporting international standards such as SQL92 and OGC-SFS.

I suppose all the above acronyms sounds really obscure and (maybe) irritating to you.
Don't be afraid: very often obscure technical jargon hides really simple to understand concepts:
  • a DBMS [Database Management System] is a software designed to store and retrieve arbitrary data in the most efficient and generalized way.
    Actually, lots and lots of huge and highly structured complex data.
  • SQL [Structured Query Language] is a standardized language supporting DBMS handling:
    using SQL statements you can define how your data are organized.
    And you can insert, delete or update your data into the DBMS.
    Obviously, you can also retrieve (query) your data in a very flexible (and efficient) way.
  • OGC-SFS [Open Geospatial Consortium - Simple Feature Specification] allows to extend the basic DBMS / SQL capabilities so to support a special Geometry data-type, thus allowing to deploy a so-called Spatial DBMS
SpatiaLite is widely based on the top of the very popular SQLite, a lightweight personal DBMS.
They act as a tight couple: SQLite implements a standard SQL92 data engine, while SpatiaLite implements the standard OGC-SFS core.
Using both them combined you'll then get a complete Spatial DBMS

SQLite/SpatiaLite aren't based on the most common client-server architecture: they adopt a simpler personal architecture. i.e. the whole SQL engine is directly embedded within the application itself.
This elementary simple and unsophisticated architecture widely simplifies any task related with database management: you can simply open (or create) a database-file exactly in the same way you are accustomed to follow when you open a text document or a spreadsheet. There is absolutely no extra-complexity implied in such tasks.
A complete database (maybe, one containing several millions entities) simply is an ordinary file. You can freely copy (or even delete) this file at your will without any problem.
And that's not all: such database-file supports a universal architecture, so you can transfer the whole database-file from one computer to a different one without any special precaution.
The origin and destination computer can actually use completely different operating systems: this has no effect at all, because database-files are cross-platform portable

Clearly, all this simplicity and lightness has a cost: SQLite/SpatiaLite support for concurrent multiple access is very rudimentary and poor.
This is what personal DB exactly means; the underlying paradigm is: single user / single application / standalone workstation

If supporting multiple concurrent access is a main goal for you, then SQLite/SpatiaLite aren't the better choice for your needing: a most complex client-server DBMS is then strongly required.
Anyway, SpatiaLite is very similar to PostgreSQL/PostGIS (a heavy-weighted client-server open source Spatial DBMS): so you can freely switch (in a relatively painless way) from the one to the other accordingly to your actual requirements, choosing each time the best tool to be used.
Some useful further references:

Table of Contents Next Slide

CC-BY-SA logo Author: Alessandro Furieri a.furieri@lqt.it
This work is licensed under the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.

GNU logo Permission is granted to copy, distribute and/or modify this document under the terms of the
GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.