Neo4J - создание большого количества отношений (3,6 миллиона)

Я очень новичок в Neo4j, и у меня возникают трудности при попытке создать большое количество отношений (~ 3,5 млн) между примерно 2,5 млн узлов. Я пытаюсь выполнить приведенный ниже запрос, используя веб-интерфейс для Neo4j на локальном хосте. Запрос выполняется, но примерно через 5 минут в браузере появляется сообщение «Отключено», в других случаях я получаю сообщение с жалобой на кучу Java. Я не уверен, что мой запрос не подходит для того, что я хотел бы сделать, или просто неэффективен, или, может быть, я прошу слишком много от базы данных? Может ли кто-нибудь посоветовать, как я могу создать отношения между моими узлами?

Структура узлов очень проста: Клиент: CSN, местоположение, пол.

Файл, который я использую для отношений, также очень прост; Взаимосвязи: SourceCSN, DestCSN

using periodic commit 100 
load csv with headers from "file:///c:/datafiles/InterCustomerRelationships.csv" as csvLine 
MATCH (from:Customer {CSN: csvLine .SourceCSN}), (to:Customer {CSN: csvLine.DestCSN})
CREATE (from)-[:PAID]->(to)

Я использую Neo4J 2.1.1 на Windows 7 с 8 ГБ ОЗУ.

Заранее спасибо за любую помощь/совет - все будет с благодарностью.


person CWild    schedule 21.01.2015    source источник


Ответы (1)


Прежде всего, убедитесь, что у вас есть индексы для свойства CSN метки клиента. Это может быть простой индекс или, я думаю, в вашем случае уникальное ограничение.

Во-вторых, предлагаю запустить сначала небольшой импорт из 10 строк и проанализировать, как выглядит план выполнения. Для этого вы можете запустить тот же импорт и ограничить набор (сделайте сначала резервную копию вашей базы данных), это должно быть сделано в neo4j-shell:

PROFILE
load csv with headers from "file:///c:/datafiles/InterCustomerRelationships.csv" as csvLine 
WITH csvLine
LIMIT 10
MATCH (from:Customer {CSN: csvLine .SourceCSN}), (to:Customer {CSN: csvLine.DestCSN})
CREATE (from)-[:PAID]->(to)
person Christophe Willemsen    schedule 21.01.2015
comment
Привет Кристоф Спасибо за вашу помощь, это сработало отлично. Я обнаружил, что, несмотря на установленную 64-битную версию Neo4j, у меня была только 32-битная версия Java RE (стандартная версия моей компании). Я установил правильную версию Java и использовал периодическую фиксацию, установленную на 10000. - person CWild; 23.01.2015