2015-05-05 2 views
1

Так что это вопрос дизайна базы данных диаграммы neo4j. Имеет ли где-то фильтр свойство даты относительно результативно или я должен начать создавать узлы и отношения, чтобы помочь отфильтровать это.Производительность временных фильтров в neo4j, где

Например, используя пример графического примера neo4j.

MATCH (nineties:Movie) WHERE nineties.released > 1990 
AND nineties.released < 2000 RETURN nineties.title 

Если бы миллионы фильмов, что этот запрос будет делать то, что было бы сродни сканирования таблицы всех фильмов, а затем фильтрация - бы создать индекс на Movie.released быть способом, чтобы избежать этого?

Или лучше иметь узел за каждое десятилетие, например, шестидесятые, семидесятые, восьмидесятые и т. Д. ... и связать каждый фильм с этим узлом более эффективным по запросу?

Что делать, если это был более динамический запрос времени, например фильмы, выпущенные за последние 7 дней, просто создаст индекс для освобождения и добавит предложение where, которое будет достаточно хорошим, или есть ли подводные камни для этого подхода?

ответ

2

Подчеркивая свойства узла с помощью < и> не является ли это «исполнителем», я имею в виду, что быстрее пересекать отношения.

Фактически, время управления в Neo4j является обычным прецедентом, когда вам нужно иметь сдвиг ума.

Как правило, мы используем деревья времени и события или в ваших случаях, когда фильмы будут иметь отношение RELEASED_IN, связанное с узлом Timetree в 1990 году.

enter image description here

Вы можете посмотреть на плагин GraphAware TimeTree Neo4j, который будет обрабатывать это под капотом:

https://github.com/graphaware/neo4j-timetree

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