2014-10-01 3 views
0

Скажем, у меня есть график с миллионами пользователей и миллионы отношений между ними. Но на графике существует только одно отношение типаX. И в этот момент Neo4j не поддерживает индекс схемы для отношений. Затем, когда я запускаю запрос:Эффективность запроса Neo4j по типу отношений

Соответствие (n) - [r: typeX] -> (m) return r;

Это означает, что для того, чтобы найти это отношение,
Neo4j должен перебирать все узлы/отношения (в миллионах)?

Если это так, что можно сделать, чтобы улучшить его? Мне не нравится идея введения дополнительных узлов. Во-первых, есть вещи, которые, естественно, следует рассматривать как отношения. «любовь», «ненависть». Во-вторых, даже если добавлены дополнительные узлы, запросы, подобные (a) - [* .. 5] -> (b), могут стать намного более сложными.

+0

Это полный запрос? Как есть, это вернет каждое ваше отношение типа 'typeX' в вашем графике. – subvertallchris

ответ

0

Вы правы, что нет индексов схемы связей. Как правило, все, что является «вещью» в вашем домене, должно быть узлом. Если вы ищете одно глобальное отношение TYPE_X, это похоже на то, что вы делаете в своем домене. У вас в основном есть 2 варианта:

  1. Относитесь к TYPE_X как к предмету в вашем домене и сделайте его узлом.
  2. использование устаревших индексов для отношений, см http://docs.neo4j.org/chunked/stable/indexing.html
+0

Из этой статьи Найджела Малого: http://nigelsmall.com/neo4j/index-confusion, устаревший индекс не дает возможности ускорить запросы. И не существует индекса схемы для отношений. Означает ли это, что любой запрос для типа отношений неэффективен? – daye1314

+0

например: Match (n) - [r: typeX] - (m) return count (r); Match (n) - [r {propertyA: valueA}] - (m) return count (r); – daye1314

+0

Эти запросы всегда являются глобальными запросами, пересекающими ваш полный график. –

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