Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/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
仅返回具有边的顶点的Gremlin查询_Gremlin - Fatal编程技术网

仅返回具有边的顶点的Gremlin查询

仅返回具有边的顶点的Gremlin查询,gremlin,Gremlin,是否有更有效的方法返回前100个具有边且没有特定属性的顶点的id g.V() .filter(hasNot("SOME_PROPERTY").bothE()) .limit(100) .id() 我不认为你可以用一种更好的方式来写。这种遍历的速度只会与底层图形的速度一样快,以优化缺少通常不那么快的属性的情况。它通常被视为一个全局操作,必须迭代图中的每个顶点(或直到找到100个匹配),我认为任何图都不允许索引在这种情况下有所帮助 如果这个遍历意味着是一个实时遍历(OLTP),那么您可能应该

是否有更有效的方法返回前100个具有边且没有特定属性的顶点的id

g.V()
 .filter(hasNot("SOME_PROPERTY").bothE())
 .limit(100)
 .id()

我不认为你可以用一种更好的方式来写。这种遍历的速度只会与底层图形的速度一样快,以优化缺少通常不那么快的属性的情况。它通常被视为一个全局操作,必须迭代图中的每个顶点(或直到找到100个匹配),我认为任何图都不允许索引在这种情况下有所帮助


如果这个遍历意味着是一个实时遍历(OLTP),那么您可能应该考虑默认为“某个属性”,以便它可以以某种方式索引以检测负值,或者如果它更多的是管理遍历(例如检测坏数据来清理)(OLAP)。然后,您可能应该使用Gremlin Spark执行该遍历。

在特定条件下,当前“SOME_PROPERTY”设置为1,否则该属性不会添加到顶点。我假设检查财产的价值不会更快。e、 g.
g.V().filter(not(has)(“SOME_PROPERTY”,P.eq(1)))…
此外,我们使用的底层数据库是AWS Neptune,据我所知,它不允许任何额外的索引。如果没有索引,我认为您将看到相同的性能,因为您仍然需要迭代所有顶点以找到该值1。如果对该值进行索引,可能会更快,但听起来索引的选择性较低,因此它会返回大量顶点,这可能会导致迭代成本增加,具体取决于有多少个顶点。在“规模”(意味着大约9200万个顶点)下运行一些测试后,从过滤器中分离这两个似乎更有效
g.V().hasNot(“某些属性”).filter(bothE()).limit(100).id()
。看起来
.filter(bothE())
相当昂贵。对于
filter()
来说,bothE()不应该太贵,因为过滤器只需要1就可以通过。不过,我对海王星的内部结构并不完全熟悉。如果你给海王星一个提示,告诉它你只需要一个过滤器(bothE().limit(1)),海王星可能会更乐意更快地完成这个任务?