Собственные API Neo4J Java против API обхода против Cypher

Кто-нибудь делал оценку производительности для Neo4J Java Native API, Traversal API и Cypher. Какой из этих трех вариантов даст мне лучший результат с точки зрения производительности? Кроме того, для операций записи я должен использовать нативные API Java или шифр. Есть ли возможность группировать операции с БД в нативных API, чтобы она просто удаляла БД только один раз, а не для каждого узла / создания отношений.

1 ответ

Вам будет интересна эта статья. Но главный вывод из их испытаний

  • Базовый API может отвечать на около 2000 запросов друга друга (я должен признать, в очень редкой сети).
  • Платформа Traverser работает примерно на 25% медленнее, чем Core API
  • Наихудшим является шифр, который медленнее, по крайней мере, на один порядок, способный отвечать примерно на 100 запросов типа FOAF в секунду. Я был шокирован, поэтому поговорил с Андресом Тейлором из neo4j, который в основном работает на Cypher. Он спросил, какую версию neo4j я использовал, и я ответил, что это 1.7. Он сказал мне, что я должен проверить 1.9. с тех пор как Cypher стал более производительным. Поэтому я запускаю тесты над neo4j 1.8 и neo4j 1.9, к сожалению, Cypher стал медленнее в новых версиях neo4j.

Тем не менее, я бы порекомендовал использовать Cypher, если не в ситуации высокой производительности. (В основном, с этим труднее работать, тем быстрее это может быть. Вы должны сбалансировать усилия по разработке с производительностью.) Кроме того, эти данные устарели, и каждое серьезное обновление Neo4j поставляется с новыми приемами, которые может планировать Cypher. использовать для более эффективного запроса. Поэтому производительность Cypher будет зависеть от содержимого БД и версии Neo4j (в лучшую или в худшую сторону).

Кроме того, Traversal API построен на Core API, а Cypher построен на Traversal API; Так что все, что вы можете сделать в Cypher, может быть сделано с другими 2.

Другие вопросы по тегам