2013-07-23 10 views
18

Jeśli ktoś tworzy bazę danych na bazie innej bazy danych, takiej jak twitter, czy ta baza dziedziczy ograniczenia i nieefektywność bazowej bazy danych?Czy wykresy baz danych mogą efektywnie dystrybuować dane między węzłami?

Jestem szczególnie zainteresowany titan db (http://thinkaurelius.com) z powodu ich roszczenia do wsparcia wydajnego dzielenia zbioru danych między węzłami.

Twierdzą, że wspierają dystrybucję danych między węzłami, ze względu na wydajność kasandra. Jednak neo4j twierdzi, że powodem, dla którego nie dystrybuują danych między węzłami, ale raczej duplikowaniem całego zestawu danych w każdym węźle, jest to, że każde przejście przez wykres, które opuszcza jeden węzeł, i dlatego musi się przemieszczać przez sieć Ethernet, jest zbyt wolne być praktycznym.

Ponieważ Kasandra nie ma wiedzy na temat wykresu, nie może zoptymalizować, aby zachować wykresy na jednym węźle. W związku z tym większość przejść między wykresami będzie przebiegała przez granice węzłów.

Czy tytani twierdzą, że efektywnie skalują się w węzłach?

Odpowiedz

19

Titan określa kluczową kolejność sortowania bazowego zaplecza pamięci (BOP dla Cassandra, domyślnie dla HBase), a następnie przypisuje identyfikatory do wierzchołków tak, że wierzchołki przypisane do tego samego bloku partycji mają identyfikatory przypisane do tego samego fizycznego maszyna. Innymi słowy, Titan "rozumie", w jaki sposób bazowy mechanizm przechowywania danych rozprowadza dane i wykorzystuje techniki partycjonowania wykresów, które wykorzystują tę świadomość. Titan używa półautomatycznego partycjonowania, który zawiera wiedzę o domenie.

W benchmarku Pearsona (http://arli.us/edu-planet-scale) wykres został podzielony na partycje według uniwersytetów, co jest prawie optymalnym kryterium partycjonowania dla tego konkretnego zestawu danych. Bez partycjonowania skalowanie do 120 miliardów krawędzi byłoby prawie niemożliwe.

Titan opiera się na sprawdzonych technologiach (pod względem skali, trwałości, tworzenia kopii zapasowych, dostępności, odzyskiwania po awarii itd.) Podczas wprowadzania innowacji na warstwę graficzną. Jest to ta sama trasa, którą obrał zarówno stado na Twitterze, jak i Facebook Tao. Chociaż oznacza to, że Tytan jest wolniejszy przy bardzo głębokich przejazdach, umożliwia to Titanowi skalowanie do bardzo dużych wykresów lub bardzo wielu równoczesnych transakcji (odczyt i zapis).

0

Dobre pytanie. Myślę, że chodzi tu tylko o kalibrację. Twitter (wykorzystujący Cassandrę) używa graficznej bazy danych w naprawdę specyficzny sposób (mają tylko dwa poziomy "głębokości"), więc zapytania nie muszą przechodzić przez długie wykresy (i nie są zmuszane do replikowania całego zbioru danych). Myślę, że zarówno Titan jak i Neo4j mają rację, Neo4j stara się dostarczyć bazę danych z wykresami do ogólnego zastosowania, więc masz wiele rozwiązań w zależności od tego, jak z niej korzystasz i nie mogą wiedzieć, jak ludzie będą z nich korzystać, więc zastosują bardziej powszechne rozwiązanie : replikowanie całego zestawu danych.

W rzeczywistości, jeśli nie powielisz całego zestawu danych i że chcesz przejść długą ścieżką na wykresie, będzie on powolny.

Jakie będzie Twoje zużycie? Nigdy nie używałem Tytana, ale dobrym testem byłoby porównanie jego wydajności z Neo4j w zależności od "głębokości" zapytań.

+0

Wygląda na to, że Titan obsługuje dowolny typ wykresu, ponieważ Kasandra (podobno) nic nie wie o wykresie - tylko surowe dane. Niestety, nie mam kilku serwerów do testowania. Nie sądzę, aby benchmark na 5 wirtualnych maszynach działających na tym samym dysku twardym, z wewnętrzną siecią będzie sprawiedliwym sposobem na przetestowanie tego. –

Powiązane problemy