当前位置:  开发笔记 > 数据库 > 正文

关于卡桑德拉的泰坦地理数据

如何解决《关于卡桑德拉的泰坦地理数据》经验,为你挑选了1个好方法。

我正在寻找使用Titan来创建可扩展的地理空间数据存储(我在想R树).在文档中,有一个GeoShape查询,文档说titan可以使用Lucene或ElasticSearch执行地理数据.但是,看起来这会非常慢,因为在cassandra中遍历节点本质上是在cassandra中进行连接查询,这是一个非常糟糕的主意.我想我可能会误解数据表示.

我阅读了Titan数据模型文档,但我仍然不太了解它.如果所有边都存储在Cassandra行中,那么Titan仍然必须在顶点表上"连接".解决此问题的一种方法是使列值等于边属性数据,然后您可以将顶点数据和边数据整齐地打包到行中.但是,当您想要执行超过1个节点的查询时,这会中断,我们又会再次回到加入问题.

所以.Titan是否在Cassandra中模拟连接查询? - 和 - 在这些条件下地理查找的性能如何?



1> Dan LaRocque..:

我认为这个问题将边缘遍历与地理空间索引查找混为一谈.它们在API和实现级别都是分开的.索引未在数据模型图片中示出.

让我们更具体一点.假设我使用Murmur3Partitioner或RandomPartitioner与ES和Cassandra一起运行Titan.我在边缘称为"地点"的ES地理空间索引,如"入门"页面中所述.通过地理空间查询(例如"入门"文档中的"WITHIN")查找边缘,首先点击ES.ES返回ID Titan可以用来快速查找Cassandra中相关的顶点/边缘数据,而无需对关系连接进行模拟.

地理空间数据进行这些边缘查找的成本应该大致相当于ES WITHIN实现的成本(我认为委托给Spatial4j),加上Titan在获取ID后对Cassandra进行的查找,这些ID应该与边缘数量大致呈线性关系ES发现.这只是背后的估计,所以请大量使用它.

在我通过地理匹配获得边缘之后,如果我想在集合中的每个边缘附近运行任意遍历,那么我将看看在头/尾顶点上生成MultiQuery并启用数据库级缓存.如果查询未命中缓存或缓存已冷/禁用,则Titan仍会尝试在可能的情况下检索遍历在每个顶点的单个Cassandra切片中所关注的所有边.如果您担心Titan的边缘遍历效率,那么您可能会发现带有Titan的Boutique Graph Data很有趣.

HTH

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有