0

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

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

g.V()

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

org.apache.tinkerpop.gremlin.driver.exception.ResponseException:找不到索引来回答查询子句并且 graph.allow_scan 被禁用:

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

g.V().limit(2)

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

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

谢谢

4

1 回答 1

2

关于在禁用扫描的情况下应该允许什么样的查询(如果有的话)的讨论正在进行中。现在规则很简单:如果初始步骤不是索引查找,那么它被认为是完整扫描。

很容易说:

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)

我们在哪里画线?我不指望你回答这个问题,只是想表明它并不像起初看起来那么容易。

于 2017-04-05T21:42:26.853 回答