如何使用NoSQL大规模运行地理空间查询?

Lou*_*srr 9 geospatial cassandra nosql couchbase

我正在准备构建一个Android/iOS应用程序,这将要求我制作复杂的多边形和包含地理空间查询.我喜欢Apache Cassandra没有单点故障,容错和数据中心意识.Cassandra没有直接支持地理空间查询(我知道),但是MongoDB和Couchbase Server都支持.MongoDB存在扩展问题,我不确定Couchbase是否会比使用Solr或Elasticsearch的Cassandra更好.

通过使用Datastax Enterprise(DSE),Cassandra和Elasticsearch而不是Couchbase Server,我会犯错吗?使用Cassandra/ES后端与Couchbase的网页加载时间是否会有显着差异?

Mne*_*yne 6

Aerospike 刚刚发布了 Server Community Edition 3.7.0,其中包含地理空间索引作为一项功能。

Aerospike 现在可以存储 GeoJSON 对象并执行各种查询,允许应用程序跟踪快速变化的地理空间对象或简单地询问“我附近有什么”的问题。在内部,我们使用 Google 的 S2 库和 Geo Hashing 对这些点和区域进行编码和索引。支持以下类型的查询:

  • 区域内的点
  • 半径内的点
  • 点所在的区域

这可以与用户定义函数 (UDF) 结合使用来过滤结果——即,进一步细化结果以仅包括您附近的酒吧、餐馆或宗教场所——即使是当前开放或可用的地方。此外,找到某个点所在的区域,例如,广告商可以确定移动用户所在的活动区域,从而投放具有地理空间针对性的广告。在内部,使用相同的存储机制,这使得对地理空间数据或记录中保存的其他数据的高并发读写成为可能。地理空间数据非常有趣,因此我们提供了一组基于 Open Street Map 和 Yelp Dataset Challenge 数据的示例。

地理空间是 3.7.0 版本中的一项实验性功能。它旨在让开发人员尝试并提供反馈。我们认为这些 API 是好的,但在一个实验性功能中,根据社区的反馈,Aerospike 可能会在该功能正式发布时选择修改这些 API。它现在不适合生产使用(尽管我们知道有些开发人员会直接进入生产......)