SpatiaLite

i.e. the whole SQL engine is directly embedded within the application itself: a complete database simply is an ordinary file which can be freely copied and transferred from one computer/OS to a different one without any special precaution.

SpatiaLite extends SQLite's existing spatial support to cover the OGC's SFS specification.

[2] It isn't necessary to use SpatiaLite to manage spatial data in SQLite, which has its own implementation of R-tree indexes and geometry types.

But SpatiaLite is needed for advanced spatial queries and to support multiple map projections.

As it is a single binary file, SpatiaLite is also used as a GIS vector format to exchange geospatial data.