Это продолжение не может воспроизвести/проверить требования к производительности в базах данных графов и neo4j в книгах действий. Я обновил настройки и тесты и не хочу слишком сильно изменять исходный вопрос.
Вся история (включая скрипты и т.д.) находится на https://baach.de/Members/jhb/neo4j-performance-compared-to-mysql
Краткая версия: при попытке проверить утверждения производительности, сделанные в книге "База данных диаграмм", я пришел к следующим результатам (запрос на случайный набор данных, содержащий n людей, по 50 друзей):
My results for 100k people
depth neo4j mysql python
1 0.010 0.000 0.000
2 0.018 0.001 0.000
3 0.538 0.072 0.009
4 22.544 3.600 0.330
5 1269.942 180.143 0.758
"*": только один запуск
My results for 1 million people
depth neo4j mysql python
1 0.010 0.000 0.000
2 0.018 0.002 0.000
3 0.689 0.082 0.012
4 30.057 5.598 1.079
5 1441.397* 300.000 9.791
"*": только один запуск
Используя 1.9.2 на 64-битной ubuntu, я установил neo4j.properties с этими значениями:
neostore.nodestore.db.mapped_memory=250M
neostore.relationshipstore.db.mapped_memory=2048M
и neo4j-wrapper.conf с:
wrapper.java.initmemory=1024
wrapper.java.maxmemory=8192
Мой запрос к neo4j выглядит так (используя REST api):
start person=node:node_auto_index(noscenda_name="person123") match (person)-[:friend]->()-[:friend]->(friend) return count(distinct friend);
Node_auto_index на месте, очевидно
Есть ли что-нибудь, что я могу сделать для ускорения neo4j вверх (чтобы быть быстрее mysql)?
А также есть qaru.site/info/143944/... с той же проблемой.