Ответ 1
Насколько я знаю, хранилища данных Neo4J и индексы Lucene всегда записываются в файлы. В Linux, по крайней мере, вы можете настроить систему регистрации ramfs
для хранения файлов в памяти.
См. также:
Я не хочу сохранять какие-либо данные, но все же хочу использовать Neo4j для его обхода графика и возможностей алгоритма. Во встроенной базе данных я настроил cache_type = strong
, и после всех записей я установил транзакцию на сбой. Но мои скорости записи (node, скорости создания отношений) медленны, и это становится большим узким местом в моем процессе.
Итак, вопрос в том, может ли Neo4j запускаться без каких-либо аспектов персистентности и вообще как чистый API? Я пробовал других, таких как JGraphT, но у них нет механизмов обхода, таких как Neo4j.
Насколько я знаю, хранилища данных Neo4J и индексы Lucene всегда записываются в файлы. В Linux, по крайней мере, вы можете настроить систему регистрации ramfs
для хранения файлов в памяти.
См. также:
Сколько изменений вы группируете в каждой транзакции? Вы должны попытаться сгруппировать до тысячи изменений в каждой транзакции, так как совершение транзакции заставляет логический журнал на диск.
Однако в вашем случае вы можете вместо этого начать свои транзакции с помощью:
db.tx().unforced().begin();
Вместо:
db.beginTx();
Что делает эту транзакцию не дождаться, когда логический журнал выведет на диск и сделает небольшие транзакции намного быстрее, но отключение питания может привести к тому, что вы потеряете последние пару секунд данных.
Метод tx() находится на GraphDatabaseAPI, который реализует, например, EmbeddedGraphDatabase.
вы можете попробовать виртуальный диск. Это заставит neo4j упорствовать на диске, но все это произойдет в памяти https://thelinuxexperiment.com/create-a-virtual-hard-drive-volume-within-a-file-in-linux/