嗨,我已经在我的架构中禁用了扫描。
我知道这样的查询是不允许的:
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)
我们在哪里划清界限?我并不指望你回答这个问题,只是想表明这并不像一开始看起来那么容易。