2012-11-10 42 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

相關問題