由于Cassandra基于Dynamo论文(分布式,自平衡哈希表)+ BigTable,并且有一些空间索引可以很好地适应该范例(quadkey或geohash).是否有理由没有实施地理空间支持?
您可以将GeoPoint数据类型添加为具有内部geohash的元组,并将CF指定为包含地理数据.从那里,您可以选择将地理数据作为二级索引或非规范化SCF的行为.这可以为地理空间开发奠定基础,你可以从实现一些低悬的水果开始,例如.nearby(),它可以返回共享相同geohash的列.(我知道这不会给你"最近的",你必须散步周围的地理位置,或者使用形状和空间填充曲线,以便稍后实现,但这是一个寻找一些的一般操作附近的专栏)
我知道SimpleGeo/Urban Airship为Cassandra建立了地理支持,但它看起来并不像是开放的那样.另外,让我知道是否有更好的地方问这个(quora,邮件列表等...)
我认为答案分为两部分.
它不存在的原因是因为没有人将代码提交到Cassandra中而已经考虑过这个功能,或者认为这个功能具有足够的优先权来花费大量时间.Cassandra的大部分开发都是由Datastax完成的,他们作为一个商业实体,对用户的需求和建议非常了解,并且对于能够在新功能方面给予他们最大投资回报率的东西非常务实.
如果有一个足够好的第三方开发人员(或团队)有足够的时间在他们手上,这可以完成,并且概念上C*提交者可能没有添加像这样的主要功能的问题.
第二个方面是Cassandra支持blob(字节数组),这意味着您所描述的内容可以以相对简单的方式在客户端应用程序/驱动程序中实现.在这种情况下,驱动器将负责将地理调用转换为适当的原始字节操作.我也怀疑这比使用核心存储引擎中的相关运算符集支持整个新数据原语要少.