Проблемы с производительностью neo4j

#neo4j #neography

#neo4j #neography

Вопрос:

Я переношу свою базу данных в neo4j 2.0.3 с помощью neography. Вначале каждый мой запрос на передачу занимал гораздо меньше времени, но теперь (размер файла graphml составляет около 1,3 ГБ) вставка занимает 3-5 раз и часто выдает эту ошибку для определенных запросов.

 org.neo4j.server.rest.repr.RepresentationExceptionHandlingIterable.exceptionOnHasNext(RepresentationExceptionHandlingIterable.java:50)
org.neo4j.helpers.collection.ExceptionHandlingIterable$1.hasNext(ExceptionHandlingIterable.java:46)
org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42)
org.neo4j.server.rest.repr.ListRepresentation.serialize(ListRepresentation.java:71)
org.neo4j.server.rest.repr.Serializer.serialize(Serializer.java:75)
org.neo4j.server.rest.repr.MappingSerializer.putList(MappingSerializer.java:61)
org.neo4j.server.rest.repr.CypherResultRepresentation.serialize(CypherResultRepresentation.java:83)
org.neo4j.server.rest.repr.MappingRepresentation.serialize(MappingRepresentation.java:41)
org.neo4j.server.rest.repr.OutputFormat$1.write(OutputFormat.java:160)
org.neo4j.server.guard.GuardingRequestFilter.doFilter(GuardingRequestFilter.java:68)
org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)
org.neo4j.server.guard.GuardingRequestFilter.doFilter(GuardingRequestFilter.java:68)
java.lang.Thread.run(Thread.java:745)
  

и

org.neo4j.kernel.guard.Guard$Timeout.check(Guard.java:132) org.neo4j.kernel.guard.Guard.check(Guard.java:43) org.neo4j.kernel.InternalAbstractGraphDatabase $5.getNodeByIdOrNull(InternalAbstractGraphDatabase.java:745) org.neo4j.kernel.impl.core.NodeManager.getNodeById(NodeManager.java:301) org.neo4j.kernel.InternalAbstractGraphDatabase.getNodeById(InternalAbstractGraphDatabase.java:1121) org.neo4j.cypher.internal.spi.v2_0.TransactionBoundQueryContext$NodeOperations.GetById(TransactionBoundQueryContext.scala:157) org.neo4j.cypher.internal.spi.v2_0.TransactionBoundQueryContext$$anonfun$getNodesByLabel$1.применить(TransactionBoundQueryContext.scala:131) org.neo4j.cypher.internal.spi.v2_0.TransactionBoundQueryContext$$anonfun$getNodesByLabel$1.применить(TransactionBoundQueryContext.scala:131) org.neo4j.cypher.internal.helpers.JavaConversionSupport$$анон $2.далее(JavaConversionSupport.scala:33) scala.collection.Итератор $$анон $ 11.следующий (Iterator.scala:328) scala.collection.Итератор $$анон $ 13.следующий (Iterator.scala:372) scala.collection.Итератор $$анон $14.Имеет следующий(Iterator.scala:389) scala.collection.Итератор $$анон $ 13.Имеет следующий (Iterator.scala:371) scala.Коллекция.Итератор $$анон $14.Имеет следующий(Iterator.scala:388) scala.collection.Итератор $class.foreach(Iterator.scala:727) scala.collection.AbstractIterator.foreach(Iterator.scala:1157) scala.collection.generic.Растущий $ class.$ плюс $ плюс $ эквалайзер (растущий.scala:48) scala.collection.изменяемый.ListBuffer.$ плюс $ плюс $ эквалайзер (ListBuffer.scala:176) scala.collection.изменяемый.ListBuffer.$ плюс $ плюс $ эквалайзер (ListBuffer.scala:45) scala.collection.TraversableOnce $class.to (TraversableOnce.scala:273) scala.collection.AbstractIterator.to (Итератор.scala:1157) scala.collection.Проходимый один раз $class.ToList(TraversableOnce.scala:257) scala.collection.Абстрактный редактор.ToList(Iterator.scala:1157)

Я импортирую данные фильмов из rdb в neo4j, перебирая каждую строку rdb и создавая узел для фильма (если он не существует) и связанных с ним тегов (если не существует), а затем создавая отношения между ними и подобные подобные действия.

Как я могу повысить производительность и устранить эту ошибку?

Это мой файл neo4j-wrapper.conf

Во время поиска я наткнулся на http://docs.neo4j.org/chunked/stable/configuration.html который дает подробные советы по производительности и настройке. Но для начала это кажется сложным. Есть ли какие-либо действия и не использовать neo4j с ruby для повышения производительности.

Пожалуйста, помогите мне.

Комментарии:

1. Не могли бы вы поделиться тем, как вы импортируете свои данные. Прямо сейчас это непонятно из вашего вопроса. Пожалуйста, поделитесь подробностями о том, как вы используете API-интерфейсы Neo4j для вставки ваших данных, вашей версии Neo4j, конфигурации и т. Д. Кроме того, если вы настроите тайм-аут времени выполнения, вы можете ожидать его истечения, когда операция занимает слишком много времени.

2. Я использую neo4j 2.0.3 с neography , и это мой файл neo4j-wrapper.conf . Я импортирую данные фильмов из rdb в neo4j, перебирая каждую строку rdb и создавая узел для фильма (если он не существует) и связанных с ним тегов (если не существует), а затем создавая отношения между ними и подобные подобные действия. В настоящее время размер базы данных в формате graphml составляет около 1,3 ГБ. Я просто удалил ограничение по времени выполнения, чтобы избежать ошибки на данный момент. Но это может повредить в реальном времени.

Ответ №1:

Это дает хороший фон для масштабирования…

http://maxdemarzi.com/2013/11/25/scaling-up/#more-2263