Spatial Database Comparison
Monday January 26 2009 at 15:44
I thought I would try and create a table comparing all the native spatial types of the main database products around today.
Because this is a “work in progress”, I will be contantly updating it. Where I have something wrong or have missed a product, please email me and I will correct the table.
Regina makes a point about PostGIS vs ESRI’s Spatial Type. When I have downloaded and installed PostgreSQL I have done so via the public PostgreSQL download site. PostGIS is shipped with the Windows installer so as far as I am concerned PostGIS (which I have never downloaded from Refractions) is thus the “official” native type for PostgreSQL until such times PostgreSQL itself moves to revoke that status by removing it from the standard installers.
Dale Lutz pointed me at the SpatialLite implementation for SQLLite. Here the SpatialLite implementation is maintained completely separately from SQLLite so, at the moment, I don’t think I can include it in the table.
With regards ESRI. ESRI is not a manufacturer of a generic database which could be used to completely supplant Oracle, SQL Server etc. It makes extension products (ESRI spatial type) for some commercial databases but this product is in direct competition with the owner and manufacturer of these products. Therefore I do not consider it to be a native extension. (I also cannot test or use it without having to pay ESRI for the privilege – not so with the main vendors with their Express editions or the free open source alternatives.) Since MapInfo also creates and sells SpatialWare I may consider creating a separate table for these products once I am satisfied that the table below is accurate, easy to read and complete.
While 1 I have included a column on the storage format of the spatial type I want to make something perfectly clear: it is irrelevant. I was taught in computer science about Codd’s relational theory and have always believed in the quality of the mathematics and science that went into that theory. That most of the modern relational databases do not fully implement Codd’s theory is an accepted fact. But even so we should aspire to trying to implement relational theory as best we can. In this light I want to quote something that Chris Date and Hugh Darwen wrote in their book Foundation for Future Database Systems: The Third Manifesto.
“What we are saying is that, in the relational world, a domain is a data type, system- or user-defined, whose values are manipulable soley by means of the operators defined for the type in question (and whose internal representation can be arbitrarily complex but is hidden from the user).” [Emphasis added by myself]
Here is my attempt at classification/documentation.
Extension or Component
|Locator / Spatial|
SQL/MM components (arrays, numbers and objects)