English 中文(简体)
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.

最佳回答

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 .

问题回答

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.

Couchdb also has a simple spatial extension

http://vmx.cx/cgi-bin/blog/index.cgi/category/CouchDB

I ve been storing spatial data with ZODB. There s some inherent performance advantage in accessing local file data (spatialite) or unix socket (PostGIS) compared to TCP or HTTP requests (CouchDB etc), surely, but having an spatial index makes the biggest difference. I m using the same R-trees mentioned in the MongoDB article, but there are plenty of good options. The JTS topology suite has various spatial indexes for Java.

Cassandra is also an option for spatial data:

http://www.readwriteweb.com/cloud/2011/02/video-simplegeo-cassandra.php

Tarantool supports spatial two-dimensional index (RTREE) with nearest neighbor search, overlaps, contains, and other spatial operators. Tarantool maintains the entire data set in RAM, making it the only OSS in-memory database with spatial index support. https://github.com/tarantool/tarantool/wiki/R-tree-index-quick-start-and-usage

MarkLogic(Enterprise NoSQL) provides spatial functionality. This NoSQL product provides GIS applications the ability to conflate multiple objects into one entity. This provides support for managing relationships across structured and unstructured content, provenance and pedigree information about the data, historic and timeline information, etc. in a single entity.





相关问题
anything better than bounding boxes?

I have a scenario, where I have x million longitude latitude points. When a new long/lat point is added I want to know efficiently which other points are within a user configured distance parameter, ...

how to create image from gis data in C#

I m using C# to pull spatial data from a sql server 2008 database. I m then trying to perform operations on that data, but to start... I want to be able to visualize it. That is, I would like to ...

java api for simple gis computations

I am trying to develop some simple location logic in the server-side portion of a java servlet-based webapp. There are really just two operations that I m interested in: Given a start point (lat/...

does anyone know a good mapinfo forum?

I m new using mapinfo and I am going to work a lot with it. I haven t been able to find a good forum, making it impossible to get community driven assistance. I wish any of you could tell me if there ...

Determining visible area from globe frustum

I m working with a mapping application (worldwind) and trying to determine the minimum and maximum latitudes and longitudes that are currently displayed. I have access to the frustum, but I m not sure ...

热门标签