2012-11-10 6 views
15

データを永続化する必要はありませんが、グラフのトラバーサルとアルゴリズムの機能としてNeo4jを使用したいと考えています。組み込みデータベースでは、私はcache_type = strongを設定しました。すべての書き込みの後、私はトランザクションを失敗に設定しました。しかし、私の書き込み速度(ノード、関係作成速度)は遅く、これは私のプロセスで大きなボトルネックになっています。Neo4jを純粋にメモリ内で永続性なしで実行しています

Neo4jは永続性のない状態で、まったく純粋なAPIとして実行できますか?私はJGraphTのようなものを試しましたが、Neo4jが提供するようなトラバーサルメカニズムはありません。

+3

実行可能な解決策はまだありますか? – jagamot

+0

Neo4jはこれをサポートしていませんか?また、ファイルシステムでのバックアップなしで、グラフのトラバース機能のために、メモリ内でNeo4jを実行したいと考えています。 – Sergio

答えて

4

私の知る限り、Neo4JのデータストレージとLuceneインデックスは常にファイルに書き込まれます。 Linuxでは少なくとも、ファイルをメモリ内に保持するファイリングシステムramfsを設定することができます。

も参照してください:各取引であなたのグループを行うどのように多くの変更

+0

私は1.8を使用していますし、どこからでもドキュメントにメモリのサポートに表示されていない:( 我々は今、単に何の帯域幅をのNeo4jのインメモリ実装を行うことを計画していないが、1.0の後の最初の されている。 – 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

関連する問題