Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph 关于卡桑德拉的土卫六地理数据_Graph_Cassandra_Titan - Fatal编程技术网

Graph 关于卡桑德拉的土卫六地理数据

Graph 关于卡桑德拉的土卫六地理数据,graph,cassandra,titan,Graph,Cassandra,Titan,我正在考虑使用Titan创建一个可伸缩的地理空间数据存储(我想是R树)。在文档中,有一个GeoShape查询,文档称titan可以使用Lucene或ElasticSearch进行地理数据查询。然而,这似乎会非常慢,因为在cassandra中遍历节点实际上是在cassandra中执行连接查询,这是一个非常糟糕的想法。我想我可能误解了数据表示 我读了这本书,但还是不太明白。如果所有边都存储在一个Cassandra行中,那么Titan仍然必须在顶点表上“连接”。解决此问题的一种方法是使列值等于边特性数

我正在考虑使用Titan创建一个可伸缩的地理空间数据存储(我想是R树)。在文档中,有一个
GeoShape
查询,文档称titan可以使用Lucene或ElasticSearch进行地理数据查询。然而,这似乎会非常慢,因为在cassandra中遍历节点实际上是在cassandra中执行连接查询,这是一个非常糟糕的想法。我想我可能误解了数据表示

我读了这本书,但还是不太明白。如果所有边都存储在一个Cassandra行中,那么Titan仍然必须在顶点表上“连接”。解决此问题的一种方法是使列值等于边特性数据,然后可以将顶点数据和边数据整齐地打包到行中。然而,当您想进行比1个节点更深的查询时,这种情况就会发生,我们又回到了连接问题上


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

我认为这个问题将边遍历与地理空间索引查询混为一谈。这些在API和实现级别上是分开的。数据模型图片中未说明索引

让我们更具体一点。假设我使用Murruel3Partitioner或RandomPartitioner与ES和Cassandra一起运行Titan。我在边上声明一个ES地理空间索引,称为。通过地理空间查询(如此)查找边首先会遇到一个问题。ES返回IDs Titan可用于在Cassandra中快速查找关联的顶点/边数据,而无需进行类似于关系联接的操作

地理空间数据的这些边缘查找的成本应该大致相当于ES在实现中的
成本(我认为这是委托给Spatial4j的),再加上Titan在获得ID后对Cassandra进行的查找,在ES找到的边的数量上应该大致呈线性。这只是信封背面的估计值,所以请慎重考虑

在通过地理匹配获得“放置边”后,如果我想在集合中每个边的邻域中运行任意遍历,那么我将在头部/尾部顶点上寻找根a并启用数据库级缓存。如果查询未命中缓存或缓存处于冷态/禁用状态,则Titan仍将尽可能在每个顶点的单个Cassandra切片中检索遍历所关心的所有边。如果您关心Titan的边缘遍历效率,那么您可能会发现这很有趣


HTH

你完全正确。我不明白索引后端是如何适应的。谢谢