15

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

所以,问题是,Neo4j 可以在没有任何持久性方面的情况下运行,并且只是作为一个纯 API 运行吗?我尝试了 JGraphT 之类的其他方法,但它们没有 Neo4j 提供的遍历机制。

4

3 回答 3

4

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

也可以看看:

于 2012-11-10T19:48:16.047 回答
2

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

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

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

代替:

db.beginTx();

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

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

于 2012-11-10T21:23:35.687 回答
0

你可以试试虚拟光驱。它会使 neo4j 持续到驱动器上,但这一切都会发生在内存中 https://thelinuxexperiment.com/create-a-virtual-hard-drive-volume-within-a-file-in-linux/

于 2016-01-18T10:37:50.530 回答