繁体   English   中英

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

[英]Titan geo data on Cassandra

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

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

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

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

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

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

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

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM