NoSQL和空间数据

您有没有使用NoSQL(非关系)数据库存储空间数据的经验? 使用这样的数据库来保存数据(例如,使用SpatiaLite或PostGIS),是否有潜在的好处(速度,空间等)?

我已经看到有关使用MongoDB获取空间数据的文章 ,但是我对一些性能比较感兴趣。

像Neo4j这样的graphics数据库是一个非常好的select,尤其是当你随意添加不同的索引scheme时。 典型的东西,你可以做你的基础数据当然是1D索引(如Timline或B-Trees)或像希尔伯特曲线等更喜欢的东西,请参阅尼克的博客 。 此外,对于一些现场演示,请看这里的AWE开源GIS桌面工具,底层索引图在07:00左右可见。

Couchdb也有一个简单的空间扩展

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

目前,MongoDB使用B-tree的地形冲突比PostGIS的R-tree要慢(恐怕我不能给出确切的数字,但是有大量关于差异的理论文献)。 但是,在这些幻灯片中,作者提到了将R-tree添加到MongoDB并对地理密钥进行分片的方法。 您谈论桌面使用,所以geosharding可能不是有趣的,因为sharding的好处将更多地感受到海量数据集。 最终,它可能更多地取决于你想要处理的空间数据。 Postgis具有更多的function和支持拓扑,栅格,3D,坐标系统之间的转换,所以如果这是你正在寻找的,PostGIS仍然是最好的select。 如果您有兴趣存储数十亿空间对象,并且基于某些标准运行基本查找点附近/内部的所有点,那么MongoDB可能是一个非常好的select。

我一直在用ZODB存储空间数据。 与TCP或HTTP请求(CouchDB等)相比,在访问本地文件数据(spatialite)或unix套接字(PostGIS)时存在一些固有的性能优势,但是具有空间索引是最大的区别。 我使用MongoDB文章中提到的相同的R树,但有很多不错的select。 JTS拓扑套件具有Java的各种空间索引。

Cassandra也是空间数据的一个选项:

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

Tarantool支持最近邻search的空间二维索引(RTREE),重叠,包含和其他空间运算符。 Tarantool将整个数据集保存在RAM中,使其成为唯一具有空间索引支持的OSS内存数据库。 https://github.com/tarantool/tarantool/wiki/R-tree-index-quick-start-and-usage

MarkLogic(企业NoSQL)提供空间function。 这个NoSQL产品为GIS应用程序提供了将多个对象合并成一个实体的能力。 这为在单个实体中pipe理跨结构化和非结构化内容的关系,关于数据的来源和系谱信息,历史和时间线信息等提供了支持。