Как вставить объемные данные JSON в Neo4j? - PullRequest
0 голосов
/ 04 июля 2018

У меня проблемы с вставкой большого количества данных JSON в Neo4j

Если я вставлю больше данных в Neo4j, это будет означать, что для их запуска потребуется больше времени, и моя производительность будет очень низкой, и мне придется ждать 10-15 минут для полного процесса вставки.

Есть ли какое-либо решение или предложение о том, как вставить объемные данные? Я использовал запрос на слияние при вставке данных JSON, и у меня нет уникального значения, поэтому я выбрал несколько комбинаций для создания объектной модели в запросе на слияние.

dir_port sym_dev ini_tiator_group_name host_lun sym_metrix_id

( В этом запросе нет уникальных ограничений для получения объектной модели, мы использовали комбинации значений, которые я упомянул выше )

Это мой запрос:

CALL apoc.load.json('file:<path>')YIELD value AS row   
    UNWIND row.symdev AS symdevs    
    MERGE (accesssymdev:symaccess_symdev {
      sym_dev:symdevs.sym_dev,  
      ini_tiator_group_name:symdevs.ini_tiator_group_name,  
      host_lun:symdevs.host_lun,  
      symid:symdevs.sym_metrix_id,  
      dir_port:symdevs.dir_port
    })   
    ON CREATE SET   
      accesssymdev.attr_percentage = symdevs.attr_percentage,  
      accesssymdev.cap_mb = toFloat(symdevs.cap_mb),  
      accesssymdev.physicaldevicename = symdevs.physicaldevicename;   

Это мой пример значения JSON:

{
  "dir_port": "011:000",
  "attr_percentage": "(m)",
  "sym_metrix_id": "123456",
  "sym_dev": "05467",
  "ini_tiator_group_name": "cluster_abcdefgh_mnop_sss1",
  "host_lun": "52",
  "cap(mb)": "246369",
  " physicaldevicename": "not visible"
},
{
  "dir_port": "001:000",
  "attr_percentage": "(m)",
  "sym_metrix_id": "123456",
  "sym_dev": "03as1",
  "ini_tiator_group_name": "cluster_abcdefgh_mnop_sss1",
  "host_lun": "54",
  "cap(mb)": "210000",
  " physicaldevicename": "not visible"
},

1 Ответ

0 голосов
/ 06 июля 2018

Если у вас нет ключа узла или индекса или ограничения на вашем MERGE, то чем больше данных у вас будет, тем больше время, которое займет MERGE.

В вашем случае лучше всего создать ключ узла: CREATE CONSTRAINT ON (n:symaccess_symdev) ASSERT (n.sym_dev, n.ini_tiator_group_name, n.host_lun, n.symid, n.dir_port) IS NODE KEY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...