2012-11-10 38 views
15

我不想保留任何数据,但仍然想要使用Neo4j的图遍历和算法功能。在嵌入式数据库中,我配置了cache_type = strong,并且在将事务设置为失败后进行所有写入。但是我的写入速度(节点,关系创建速度)很慢,这成为我的流程中的一个大瓶颈。纯粹在内存中运行Neo4j没有任何持久性

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

+3

您是否找到一个可行的解决方案呢? – jagamot

+0

所以Neo4j不支持这个?我还想在内存中运行Neo4j,而不需要在文件系统中进行任何备份,只是为了图形遍历功能。 – Sergio

回答

4

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

参见:

+0

我们计划做一个内存实现的Neo4j的,但1.0后第一 ,根本就没有带宽,现在:( 我使用的是1.8,并且在任何地方文档内存支持没有看到。 – chethan

+0

是的,我猜没有人发现带宽呢;-) – DNA

+2

另外,你可以尝试ImpermanentGraphDatabase进行测试? https://github.com/neo4j/community/blob/master/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java –

2

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

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

相反的:

然而,在你的情况,你可以,而不是首先您的交易

 
db.beginTx(); 

这使得该交易不会等待逻辑日志强制到磁盘,使小型交易的速度要快得多,但停电可能会让您失去最后几秒的潜在数据。

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

+0

现在我切换到了批量插入器,略有改进但不是很多。所以没有交易担心。 – chethan

相关问题