2013-06-08 2 views
1

Я создаю большую базу данных графа, используя neo4j.Являются ли идентификаторы узлов Neo4J оптимизированными для доступа?

У меня есть свои внешние индексы, которые дают мне идентификаторы для соответствующих узлов, которые я использую для дальнейшего обхода графика neo4j. Другими словами, у меня уже есть идентификаторы начального узла, когда я получаю запрос к базе данных.

Мой вопрос: может ли поиск узлов быстрее, если я использую индексы neo4j/lucene для доступа к соответствующим узлам?

Или запросы, такие как:

START n=node({ids}) 

уже оптимизированы для доступа узла и ничто не может быть получено с помощью:

START n=node:nodeIndexName(key={value}) 

?

Thanks,

ответ

6

Да. Neo4j оптимизирован для Идентификатора узла, как и на уровне постоянства, все узлы являются блоком, поэтому доступ к узлу 100 аналогичен доступу к блоку 100.

Я предупреждаю вас, хотя Neo4j не дает гарантии об идентификаторе узла, если вы удалите его , Neo4j восстанавливает идентификаторы. Поэтому, если в ходе жизни вашего БД вы удаляете и добавляете несколько узлов, ваши внешние записи могут быть «действительными», но не то, что вы ожидаете.

// EDIT: Кроме того, почему бы просто не использовать Lucene для выполнения ваших поисков? Конечно, доступ к идентификатору узла выполняется быстрее, но это то, что делает Lucene под обложкой, когда вы выполняете поиск, поэтому key:name, value:frank вернет node id 5123, а neo4j вернет узел, соответствующий этому ID.

+0

Хорошо. Лучше создавать свои собственные идентификаторы, если вы выполняете внешний поиск. –

+0

@WesFreeman Точно, просто используйте UUID как свойство и индекс. – Nicholas

+0

@Nicolas: Спасибо, я использую Lucene для поиска, но мои поисковые запросы основаны на сложных полнотекстовых запросах со специальным синтаксисом и выделенными потоками токенов, поэтому я запускаю их извне в данный момент. Результатами поиска являются идентификаторы узлов. Поэтому я буду придерживаться их до сих пор и посмотреть, создает ли это проблемы с сохранением, о которых вы упоминали ... – user2467218