为什么我无法从Datastax DSE 5.0.x图形查询数据子集而不会allow_scan禁用错误?



嗨,我已经在我的架构中禁用了扫描。

我知道这样的查询是不允许的:

g.V()
g.V().hasLabel("User")

org.apache.tinkerpop.gremlin.driver.exception.ResponseException: Can 找不到用于回答查询子句的索引,graph.allow_scan 禁用:

我想知道为什么甚至那些:

g.V().limit(2)
g.V().hasLabel("User").limit(2)

导致引发相同的异常!这很令人沮丧,因为它们是有界查询,并且它们当然不会导致完整的 cassandra 表扫描。

谢谢

关于在禁用扫描的情况下应允许哪种查询(如果有的话(的讨论正在进行中。目前,规则很简单:如果初始步骤不是索引查找,则将其视为完全扫描。

说起来容易:

g.V().hasLabel("user").limit(2)

。例如应该允许,但如果这不被视为完全扫描,那么这些呢:

g.V().hasLabel("user").limit(10)
g.V().hasLabel("user").limit(100)
g.V().hasLabel("user").limit(1000)
g.V().hasLabel("user").limit(10000)
g.V().hasLabel("user").limit(100000)

我们在哪里划清界限?我并不指望你回答这个问题,只是想表明这并不像一开始看起来那么容易。

最新更新