我不想保留任何数据,但仍想使用 Neo4j 的图形遍历和算法功能。在嵌入式数据库中,我进行了配置cache_type = strong
,并且在完成所有写入操作后,我将事务设置为失败。但是我的写入速度(节点、关系创建速度)很慢,这正在成为我过程中的一大瓶颈。
所以,问题是,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/