2013-10-15 3 views
3

Я пытаюсь импортировать набор данных среднего порядка около 500 000 узлов в neo4j с использованием cypher. Я запускаю neo4j-community-2.0.0-M05 локально на моем i7ac i7ac i7ac с тактовой частотой 3,4 ГГц с SSD.neo4j импорт замедление

Я соединяю cypher с оболочкой neo4j, обертывая каждые 40k строк в транзакцию.

Я использую метки, и до того, как я начал, я создал индексы по одному свойству на каждый помеченный узел.

Когда я ушел прошлой ночью, MATCH CREATE UNIQUE занимал около 15 м. Каждый. Этим утром они занимают около 6000 м.

медленные запросы выглядит примерно так

MATCH n:Artifact WHERE n.pathId = 'ZZZ' CREATE UNIQUE n-[r:DEPENDS_ON]->(a:Artifact {pathId: 'YYY'}) RETURN a 
1 row 
5719 ms 

pathId индексируется.

Я понимаю, что это важная сборка и, вероятно, не оптимизированная производительность. Но я не менее трети своего импорта, и это замедляется все больше и больше.

Должен ли я посмотреть на другие методы, кроме cypher, для импорта этих данных?

+0

Вы пытались использовать batchinserter с параметрами, см. Https://github.com/jexp/batch-import? Я думаю, что сопоставление шаблонов может быть не оптимизировано. Было бы здорово получить доступ к вашей настройке для профилирования. –

ответ

1

Я просто хочу ответить на свой вопрос, если кто-то найдет это. Спасибо Питеру за предложение проекта пакетного импорта. Я использовал 2.0 tree.

Мой рабочий процесс оказался для (1) загрузки всех данных в реляционную базу данных, (2) очистки дубликатов, а затем (3) написать сценарий для экспорта данных в CSV-файлы.

Используя cypher, у меня был импорт в течение 24 часов, прежде чем я его убил. Используя инструмент импорта java, весь импорт занял 11 секунд с neo4j-community-2.0.0-M06.

Подводя итог: не беспокойтесь, пытаясь выписать cypher для импорта больших кусков данных. Проведите час, очистив ваши данные, если это необходимо, затем экспортируйте в CSV и используйте инструмент импорта пакета java.

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