2012-11-10 6 views
15

nie chcę utrzymywać się żadnych danych, ale nadal chcą korzystać Neo4j za nim znajduje się wykres przejścia i możliwości algorytmu. We wbudowanej bazie danych skonfigurowałem cache_type = strong i po wszystkich zapisach ustawiłem transakcję na niepowodzenie. Ale moje szybkości zapisu (węzeł, szybkość tworzenia relacji) są powolne, a to staje się dużym wąskim gardłem w moim procesie.Running Neo4j czysto w pamięci bez wytrwałości

Więc pytanie jest, może być prowadzony bez Neo4j wszelkich aspektów utrwalania do niej w ogóle i po prostu jako czysty API? Próbowałem innych, takich jak JGraphT, ale te nie mają mechanizmów przejścia, takich jak te, które zapewnia Neo4j.

+3

Znaleźliście jeszcze rozwiązanie dopuszczalne? – jagamot

+0

, więc Neo4j nie obsługuje tego? Chciałbym też uruchomić Neo4j w pamięci, bez żadnych kopii zapasowych w systemie plików, tylko po to, aby mógł on przechodzić przez wykres. – Sergio

Odpowiedz

4

O ile mi wiadomo, Neo4J przechowywania danych i indeksy Lucene zawsze są zapisywane do plików. W systemie Linux można przynajmniej skonfigurować system plików do przechowywania plików w pamięci.

Zobacz także:

+0

planujemy zrobić implementację w pamięci z Neo4j, ale najpierw po 1,0, po prostu nie ma przepustowość teraz :( Używam 1.8 i nie patrz na poparcie pamięci w docs wszystkich przewoźników. – chethan

+0

Tak, chyba nikt jeszcze nie znalazł tej przepustowości ;-) – DNA

+2

Możesz także wypróbować ImpermanentGraphDatabase w celu przetestowania? https://github.com/neo4j/community/blob/master/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java –

2

Ile zmian zrobić ci grupy w każdej transakcji? Powinieneś spróbować zgrupować do tysięcy zmian w każdej transakcji, ponieważ zatwierdzenie transakcji wymusza log log na dysk.

Jednak w twoim przypadku można zamiast rozpocząć swoje transakcje z:

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

zamiast:

 
db.beginTx(); 

co sprawia, że ​​transakcja nie czekać na logicznej dzienniku zmusić do dysku i marek małe transakcje są znacznie szybsze, ale awaria zasilania może spowodować utratę kilku ostatnich sekund danych.

Sposób TX() znajduje się na GraphDatabaseAPI, który na przykład EmbeddedGraphDatabase narzędzi.

+0

I przełączane do wkładania wsadu teraz lekką poprawę, ale nie dużo. Więc nie musisz się martwić o transakcje. – chethan