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

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

所以,问题是,Neo4j可以在没有任何持久性方面的情况下运行,就像纯API一样吗? 我尝试过像JGraphT这样的其他人,但那些没有Neo4j提供的遍历机制。

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

也可以看看:

  • 将所有Neo4J db加载到RAM

您在每笔交易中进行了多少次更改? 您应该尝试在每个事务中对最多数千个更改进行分组,因为提交事务会强制将逻辑日志添加到磁盘。

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

 。db.tx()的非受迫()开头();

代替:

 db.beginTx();

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

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

你可以尝试一个虚拟驱动器。 它会让neo4j坚持到驱动器,但它会发生在内存中https://thelinuxexperiment.com/create-a-virtual-hard-drive-volume-within-a-file-in-linux/