Почему я не могу запросить подмножество данных из Datastax DSE 5.0.x Graph без получения ошибки allow_scan is disabled?

Привет, я отключил сканирование в своей схеме.

Я знаю, что такие запросы не будут разрешены:

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.

Спасибо


person Michail Michailidis    schedule 04.04.2017    source источник


Ответы (1)


Продолжается дискуссия о том, какие запросы (если они вообще есть) должны быть разрешены при отключенном сканировании. На данный момент правило простое: если начальным шагом не является поиск по индексу, то он считается полным сканированием.

Легко сказать, что:

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)

Где мы проводим линию? Я не жду от вас ответа на этот вопрос, просто хочу показать, что это не так просто, как может показаться сначала.

person Daniel Kuppitz    schedule 05.04.2017
comment
Я понимаю это и ожидал такого ответа, но люди говорят, что никогда не запускайте с параметром allow_scan в true в рабочей среде.. но это действительно сложно, если, например, мне нужно взять, скажем, 100 последних пользователей, которые вошли в систему. Что я должен делать..? Кстати, я думал, что, по крайней мере, использование hasLabel(user) будет использовать индекс за кулисами, но теперь я понимаю, что это целая таблица cassandra. Имеет ли смысл генерировать исключение в случае полного сканирования?.. Вот в чем вопрос.. должен быть способ получить уведомление с помощью сообщения журнала и подавить исключение.. - person Michail Michailidis; 06.04.2017