Оптимизация поисковых запросов в Neo4J - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь проглотить график, который содержит ~ 100 узлов, но ~ 10K отношений, которые имеют временную метку.

После некоторых исследований я использовал пакетные транзакции и смог сократить время приема с 6 минут до 40 секунд, используя UNWIND на моей локальной машине (localhost)

Однако, когда я отправляю одни и те же пакетные транзакции с отношениями 10 КБ на другой сервер, это занимает более 3 минут.

Какие стратегии можно использовать, чтобы сократить время приема до neo4j на удаленном сервере? (Моя причина, по которой я разместил удаленный сервер, заключалась в том, чтобы отделить циклы выполнения neo4j от моего компьютера, который должен выполнять множество задач nlp, необходимых для моего приложения, сервер находится на моей локальной сети, и я единственный пользователь, подключенный к нему с помощью ip-адреса. ).

Мой запрос на прием здесь:

  result = cypher.query("CREATE CONSTRAINT ON (n:USPolitics) ASSERT n.id IS UNIQUE",map());

  parameters = createrelations();
  result = cypher.query(
          "UNWIND {batches} as batch " +
                  "MATCH (nodeA {id: batch.nodeA})"+
                  "MATCH (nodeB {id: batch.nodeB})"+
                  "MERGE (nodeA)-[rel:KNOWS]->(nodeB)" +
                  "ON CREATE SET rel+=batch.properties " +
                  "RETURN 1", parameters);

1 Ответ

0 голосов
/ 27 апреля 2018

Вы захотите добавить метку USPolitics к вашему запросу, чтобы убедиться, что индекс из созданного вами ограничения используется. Предполагая, конечно, что nodeA и nodeB на самом деле USPolitics узлы.

result = cypher.query("CREATE CONSTRAINT ON (n:USPolitics) ASSERT n.id IS UNIQUE",map());

parameters = createrelations();
result = cypher.query(
      "UNWIND {batches} as batch " +
              "MATCH (nodeA:USPolitics {id: batch.nodeA})"+
              "MATCH (nodeB:USPolitics {id: batch.nodeB})"+
              "MERGE (nodeA)-[rel:KNOWS]->(nodeB)" +
              "ON CREATE SET rel+=batch.properties " +
              "RETURN 1", parameters);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...