纯粹在内存中运行 Neo4j,没有任何持久性

2022-09-03 15:54:27

我不想保留任何数据,但仍然想使用Neo4j的图形遍历和算法功能。在嵌入式数据库中,我已经配置了,并且在所有写入之后,我将事务设置为失败。但是我的写入速度(节点,关系创建速度)很慢,这正在成为我过程中的一大瓶颈。cache_type = strong

所以,问题是,Neo4j可以在没有任何持久性的情况下运行,而只是作为一个纯粹的API吗?我尝试了像JGraphT这样的其他机制,但这些机制没有像Neo4j提供的遍历机制。


答案 1

据我所知,Neo4J数据存储和Lucene索引总是写入文件。至少在Linux上,您可以设置一个归档系统来将文件保存在内存中。ramfs

另请参阅:


答案 2

在每个事务中对多少更改进行分组?您应尝试在每个事务中对多达数千个更改进行分组,因为提交事务会强制逻辑日志到磁盘。

但是,在您的情况下,您可以通过以下方式开始交易:

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

而不是:

db.beginTx();

这使得该事务不会等待逻辑日志强制到磁盘,并使小事务更快,但是断电可能会使您丢失最后几秒钟的数据。

tx() 方法位于 GraphDatabaseAPI 上,例如 EmbeddedGraphDatabase 实现。


推荐