Cassandra没有地理空间支持的原因是什么?

9
由于Cassandra基于Dynamo论文(分布式、自平衡哈希表)+ BigTable,并且有适合这种范例的空间索引(quadkeygeohash)。是否有任何理由没有实现地理空间支持?
您可以添加一个GeoPoint数据类型作为一个包含地理哈希内部的元组,并指定CF包含地理数据。从那里开始,您可以选择将地理数据作为二级索引或去规范化的SCF的行为。这可以为地理空间开发奠定基础,并可以通过实施一些低悬的水果(例如.nearby())开始,该方法仅返回共享相同geohash的列。(我知道这不会给你“最近的”,你必须步行周围的geohashes或使用形状和填充曲线来实现,但是它是一种找到一些附近列的通用操作)
我知道SimpleGeo / Urban Airship在Cassandra中构建了地理支持,但看起来从未打开过。此外,请告诉我是否有更好的地方可以提出此问题(quora,邮件列表等)

这是一个 Python 实现的 Quadkey,如果有帮助的话可以参考 https://github.com/buckheroux/QuadKey - agentargo
我很好奇为什么数据库会支持只在特定问题域中有用的东西。其中一些确实这样做了,所以肯定有一个很好的理由。但这不是类似于支持特定的数据类型,比如基因组学吗? - Don Branson
1个回答

5
我认为答案有两部分。
首先,Cassandra没有这个功能是因为提交代码的人没有想到这个特性或者觉得这个能力不够重要而花费大量时间进行开发。Cassandra的大部分开发是由Datastax完成的,作为商业实体,他们知道用户需求和建议,并且在新功能方面相当务实,只考虑最能带来回报率的功能。
如果有足够好的第三方开发者(或团队)并有足够的时间,这样做是可能的,概念上C*的贡献者可能没有问题添加像这样的一个重要功能。
第二个方面是Cassandra支持BLOB(字节数组),这意味着您所描述的可以通过客户端应用程序/驱动程序以相对简单的方式实现。在这种情况下,驱动程序将负责将地理调用转换为适当的原始字节操作。我还怀疑这将比支持具有相关运算符集的全新数据原语的核心存储引擎少得多。

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