非关系型数据库与空间数据

39

你们是否有使用NoSQL(非关系型)数据库存储空间数据的经验?与使用SpatiaLite或PostGIS相比,使用这样的数据库来保存桌面应用程序的数据是否有潜在的好处(速度,空间等)?

我看到了一些有关使用MongoDB处理空间数据的帖子,但我对性能进行比较感兴趣。(链接)

7个回答

12

图形数据库,如Neo4j非常适合,特别是您可以随时添加不同的索引方案。您可以对基础数据进行典型操作,例如1D索引(例如Timline或B-Trees)或更奇特的操作,例如Hilbert曲线等,请参阅Nick's blog。此外,要进行一些实时演示,请查看AWE开源GIS桌面工具here,在时间07:00左右可以看到底层索引图。


Peter,谢谢你的回答。如果没有其他人回复,我会研究一下并接受你的答案。 - Igor Brejc

6
目前,MongoDB使用B树的地理哈希方式,这种方式比PostGIS的R树慢(我恐怕无法给出确切的数字,但有很多理论文献说明差异)。然而,在这些幻灯片中,作者在http://www.slideshare.net/nknize/rtree-spatial-indexing-with-mongodb-mongodc上谈到了在MongoDB中添加R树和基于地理关键字分片。由于您谈到的是桌面应用程序,因此可能不太感兴趣地理分片,因为分片的好处将更多地体现在大型数据集上。 最终,这可能更多地取决于您希望如何处理空间数据。PostGIS拥有更多的功能和拓扑支持,栅格,3D,以及坐标系之间的转换,所以如果这是您要寻找的东西,PostGIS仍然是最佳选择。如果您有兴趣存储数十亿/万亿个空间对象并仅根据某些条件运行基本的查找所有接近/内部点,则MongoDB可能是非常好的选择。

5

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

1

1

0
MarkLogic(企业级NoSQL)提供了空间功能。这个NoSQL产品为GIS应用程序提供了将多个对象合并成一个实体的能力。这为管理结构化和非结构化内容、数据渊源和谱系信息、历史和时间线信息等方面的关系提供了支持,所有这些信息都可以在一个单一实体中进行处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接