у меня есть 2 CSV-файла A и B. Файл A содержит 7000 строк с 6 свойствами, а файл B содержит 10M строк с 11 свойствами. Кроме того, файл A имеет свойство PKA, которое используется в качестве первичного ключа, тогда как файл B имеет свойство FKA, которое используется в качестве внешнего ключа по отношению к PKA.
Я хочу загрузить эти файлы в Neo4j следующим образом: 1 - вставить новый узел для каждой строки файла A и файла B 2 - добавить связь между любым созданным узлом, который представляет описанную связь первичного и внешнего ключа.
В настоящее время я вставил эти файлы с помощью BatchInserter с помощью JAVA API, добавив узел для каждой строки этих файлов и установив метки «A» и «B» для файлов A и файлов B соответственно. Я также создал два индекса для PKA и FKA. Чтобы добавить отношения, я намерен вызвать следующий оператор шифрования (из Neo4jShell):
match (a:A), (b:B) where a.PKA=b.FKB create (a)<-[:KEYREL]-(b);
Мои проблемы: - добавление узлов с помощью BatchInserter занимает 14 минут для файла B (самого большого) только с одной фиксацией в конце (~ 12 тыс. узлов/сек, ~130 тыс. свойств/сек), я хочу ускорить процесс импорта фактор 2. - запрос шифра не может быть обработан с этим размером набора данных, но я хотел бы сделать это возможным.
Я работаю на виртуальной машине с двухъядерным процессором IntelXeon @ 2,6 ГГц и 8 ГБ ОЗУ с установленными 64-разрядными версиями Windows и 64-разрядной версией Java8. Я запустил свою программу импорта java и Neo4jShell со следующими параметрами java:
-server -XX:+UseConcMarkSweepGC -Xms2000m -Xmx5000m