Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NoSQL and spatial data

Has any of you had any experience with using NoSQL (non-relational) databases to store spatial data? Are there any potential benefits (speed, space, ...) of using such databases to hold data for, say, a desktop application (compared to using SpatiaLite or PostGIS)?

I've seen posts about using MongoDB for spatial data, but I'm interested in some performance comparison.

like image 211
Igor Brejc Avatar asked Jan 11 '10 11:01

Igor Brejc


People also ask

What is relation between NoSQL and spatial data?

Conclusion. Cloud NoSQL databases have limited spatial support and as a result, only cover a narrow set of use-cases. If, however, you are running into scaling or performance issues on a relational database they might be worth a look.

What type of data does NoSQL use?

Overview. NoSQL databases store data in documents rather than relational tables. Accordingly, we classify them as "not only SQL" and subdivide them by a variety of flexible data models. Types of NoSQL databases include pure document databases, key-value stores, wide-column databases, and graph databases.

Why is NoSQL good for IoT?

One of the strong arguments for using NoSQL with IoT data is the speed and ease by which users can store data from devices. NoSQL uses key/value stores, or for some more advanced NoSQL databases, objects. With NoSQL, new information is just appended. This allows NoSQL databases to accept all sorts of new information.


2 Answers

graphs databases like Neo4j are a very good fit, especially as you can add different indexing schemes dynamically as you go. Typical stuff you can do on your base data is of course 1D indexing (e.g. Timline or B-Trees) or funkier stuff like Hilbert Curves etc, see Nick's blog. Also, for some live demonstration, look at the AWE open source GIS desktop tool here, the underlying indexed graph being visible around time 07:00 .

like image 158
Peter Neubauer Avatar answered Sep 23 '22 18:09

Peter Neubauer


Currently, MongoDB uses geohashing with B-trees which will be slower than the R-trees of PostGIS (I can't give exact numbers, I'm afraid, but there is plenty of theoretical literature on the differences). However, in these slides, http://www.slideshare.net/nknize/rtree-spatial-indexing-with-mongodb-mongodc the author talks about adding R-trees to MongoDB and sharding on a geo key. You talk about desktop use, so geosharding may not be of interest, as sharding's benefits will be felt more on massive datasets. Ultimately, it probably comes down more to what you want to do with your spatial data. Postgis has vastly more functions and support for topology, rasters, 3D, conversions between coordinate systems, so if this is what you are looking for, PostGIS would still be the best option. If you are interested in storing billions/trillions of spatial objects and just running basic find all points near/inside this point based on some criteria, then MongoDB is likely a very good choice.

like image 43
John Powell Avatar answered Sep 22 '22 18:09

John Powell