Запуск Neo4j исключительно в памяти без какой-либо настойчивости

Я не хочу сохранять какие-либо данные, но все же хочу использовать Neo4j для его обхода графика и возможностей алгоритма. Во встроенной базе данных я настроил cache_type = strong, и после всех записей я установил транзакцию на сбой. Но мои скорости записи (node, скорости создания отношений) медленны, и это становится большим узким местом в моем процессе.

Итак, вопрос в том, может ли Neo4j запускаться без каких-либо аспектов персистентности и вообще как чистый API? Я пробовал других, таких как JGraphT, но у них нет механизмов обхода, таких как Neo4j.

Ответы

Ответ 1

Насколько я знаю, хранилища данных Neo4J и индексы Lucene всегда записываются в файлы. В Linux, по крайней мере, вы можете настроить систему регистрации ramfs для хранения файлов в памяти.

См. также:

Ответ 2

Сколько изменений вы группируете в каждой транзакции? Вы должны попытаться сгруппировать до тысячи изменений в каждой транзакции, так как совершение транзакции заставляет логический журнал на диск.

Однако в вашем случае вы можете вместо этого начать свои транзакции с помощью:

db.tx().unforced().begin();

Вместо:

db.beginTx();

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

Метод tx() находится на GraphDatabaseAPI, который реализует, например, EmbeddedGraphDatabase.