2015-09-24 1 views
0

У меня есть модель данных, которую я хочу грубо моделировать после статьи, опубликованной в этом Graphgist.Neo4j - Производительность поиска по свойствам края в предложении WHERE

Мне любопытно, насколько я могу ожидать от предложения WHERE в том случае, если заданный набор из двух узлов имеет большое количество отношений между ними с параметрами 'from' и 'to', определенными на каждом край. Когда вы делаете запрос матча, как это, где вы, скажем, 100 ПРОДАЕТ отношения, как делает Neo4j обрабатывать производительность фильтрации вниз края, чтобы только один (s), что материя на основе критериев, где:

MATCH (s:Shop{shop_id:1})-[r1:SELLS]->(p:Product) 
WHERE (r1.from <= 1391558400000 AND r1.to > 1391558400000) 
MATCH (p)-[r2:STATE]->(ps:ProductState) 
WHERE (r2.from <= 1391558400000 AND r2.to > 1391558400000) 
RETURN p.product_id AS productId, 
    ps.name AS product, 
    ps.price AS price 
ORDER BY price DESC 

I не нашли способ индексирования свойств на границе напрямую, поэтому я предполагаю, что оптимизатор запросов может позаботиться о чем-то подобном или просто буквально пересекает массив ребер и находит тот, который соответствует.

ответ

1

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

Что касается производительности, имейте в виду, что Neo4j очень быстро взаимодействует, поэтому, когда ваш запрос «очень дорог», Neo4j может пересекать от 2 до 4 миллионов отношений в секунду и на ядро ​​в зависимости от конфигурации вашего оборудования.

Таким образом, для 100 отношений он будет работать как вспышка, но в настоящее время он не оптимизирован, поэтому вы увидите некоторые недостатки, если вам нужно выполнить те же операции с 1 миллионными отношениями, например.

+0

Это имеет большой смысл. Благодарим вас за ответ, и мы продолжим так запланировано. Свойство - это временная метка, поэтому, как правило, не имеет смысла индексировать, но я задавался вопросом, будет ли какая-либо значительная польза для этого на обход, но похоже, что ничего не получится. Цените помощь! – Micah

Смежные вопросы