2013-03-01 13 views
5

Stworzyłem podstawową implementację klienta wysokiego poziomu nad Neo4J (https://github.com/impetus-opensource/Kundera/tree/trunk/kundera-neo4j) i chcę porównać jego wydajność z Natywnym sterownikiem neo4j (i może także SpringData). W ten sposób byłbym w stanie określić obciążenie, w mojej bibliotece znajduje się natywny sterownik.Benchmarking wydajności Neo4J

Planuję utworzyć rozszerzenie YCSB dla Neo4J.

Moje pytanie brzmi: co należy uznać za podstawową jednostkę obiektu, która ma zostać zapisana w neo4j (w przypadku pojedynczego węzła lub kilku węzłów połączonych krawędzią). Co to jest aktualna praktyka w świecie Neo4J. Jak robią to ludzie testujący wydajność neo4j.

+1

nieznacznie OT, ale przypominam sobie kilka artykułów na temat benchmarkingu grafów w ogóle, być może pomogłoby to: https://code.google.com/p/orient/wiki/GraphDBComparison i http: //ups.savba. sk/~ marek/gbench.html – ulkas

Odpowiedz

1

Jednym ze sposobów przeprowadzenia testu wydajności jest użycie np. http://gatling-tool.org/. Trwają prace nad stworzeniem baz testowych pod adresem http://ldbc.eu. W przeciwnym razie testy porównawcze w dużym stopniu zależą od zestawu danych domeny i zapytań, które próbujesz wykonać. Może mógłbyś zacząć od https://github.com/neo4j/performance-benchmark i poprawić to?

+0

Dead link: https://github.com/neo4j/performance-benchmark – Relic

3

Zobacz graphdb-benchmarks

projektu graphdb-odniesienia jest punktem odniesienia między popularnych dataases wykresu. Obecnie framework obsługuje Titan, OrientDB, Neo4j i Sparksee. Celem tego testu porównawczego jest zbadanie wydajności każdej bazy danych wykresów pod względem czasu realizacji. Benchmark składa się z czterech obciążeń: klastrowania, masowego wstawiania, pojedynczego wstawiania i obciążenia zadaniami. Każde obciążenie zostało zaprojektowane w celu symulacji typowych operacji w graficznych systemach baz danych.

Clustering Obciążenie pracą (CW): CW składa się ze znanego algorytmu wykrywania społeczności dla optymalizacji modularności, metody Louvaina. Dostosowujemy algorytm do baz danych z analizami porównawczymi i stosujemy techniki pamięci podręcznej, aby wykorzystać możliwości zarówno graficznej bazy danych, jak i prędkości wykonywania w pamięci. Mierzymy czas potrzebny do zejścia algorytmu.

Obciążenie pracą z nakładaniem (MIW): Utwórz bazę danych wykresów i skonfiguruj ją pod kątem dużego obciążenia, a następnie zapełnimy ją konkretnym zestawem danych. Mierzymy czas utworzenia całego wykresu.

Obciążenie pojedynczego wkładania (SIW): Utwórz bazę danych wykresów i załaduj ją przy użyciu określonego zestawu danych. Każde wstawienie obiektu (węzeł lub krawędź) jest zatwierdzane bezpośrednio, a wykres jest tworzony przyrostowo. Mierzymy czas wstawiania na blok, który składa się z tysiąca krawędzi i węzłów pojawiających się podczas wstawiania tych krawędzi.

Query Workload (QW): Wykonaj trzy wspólne zapytania: FindNeighbours (FN): wyszukuje sąsiadów wszystkich węzłach. FindAdjacentNodes (FA): znajduje sąsiednie węzły wszystkich krawędzi. FindShortestPath (FS): znajduje najkrótszą ścieżkę między pierwszym węzłem a 100 losowo wybranymi węzłami.