2013-08-28 14 views
22

Istnieją triplestores (semantyczne bazy danych) i istnieją ogólne graficzne bazy danych.Jaka jest różnica między triplestore a graficznymi bazami danych?

Obie opierają się na podobnych koncepcjach łączenia jednego "produktu" z innym poprzez relację. Potrójne magazyny obsługują RDF i są wyszukiwane przez SPARQL, ale takie dodatki mogą być (i są) implementowane także w bazie danych ogólnego zastosowania w graficznych bazach danych.

Jaka jest zasadnicza różnica, która spowodowałaby, że wolisz semantyczny db/triplestore w bazie danych ogólnego zastosowania, takiej jak neo4j?

Odpowiedz

6

Moje 2 centy.

Neo4j należy do kategorii Property Graph. Wspierają ukierunkowane relacje, a każda relacja ma tylko dwa węzły; węzeł początkowy i węzeł końcowy. Węzły i relacje mogą przechowywać dowolne dane w postaci par klucz-wartość. Nie mogą one jednak wspierać relacji trójpodziałowych. tj. nie można mieć jednej krawędzi łączącej więcej niż dwa węzły, tj. a kind of hyperdege. Można jednak emulować relacje trójstronne w wykresach właściwości, tworząc węzły łączenia. You can see how to implement this in neo4j here.

Triplestores mają ustandaryzowany język zapytań w postaci SPARQL, ale nie ma jeszcze standardu do wysyłania zapytań do innych baz danych wykresów. RDF jest standardem dla importu/eksportu z triplestores.

11

Sklepy triples to bazy danych z wykresem. RDF jest wykresem o wartości. Co prawda, potrójne sklepy zazwyczaj nie przechowują informacji wewnętrznie jako wykres; to nie jest optymalne dla odpowiedzi na kwerendy, ale nadal są to bazy danych wykresów.

Wolisz je jako coś w stylu neo4j, jeśli interesuje Cię ekosystem oparty na standardach W3C. Sprawia, że ​​współdziałanie z innymi systemami opartymi na RDF jest trywialne i sprawia, że ​​pobieranie wszystkiego i przeprowadzka do innego potrójnego sklepu jest dość bezbolesne.

10

Po pierwsze, wszystkie struktury danych mogą być mniej lub bardziej bolesne dla dowolnego bazowego mechanizmu magazynowania (lub nawet systemu plików i plików tekstowych). Powodem do wyboru konkretnego modelu i przechowywania danych backend są IMHO:

  • preferencje rozwojowe i modelowanie
  • planują wydajność wykonawcze do wprowadzania, przechowywania i zapytań od modelu.

Jak już wspomniano, zarówno RDBMS i TripleStores wydają się być przydatna w czasie pracy w „płytkie” Ruchy złączenia lub przechodzenia przez sparql, i wiele pracy w pamięci podręcznej lub przygotowanych widok itp wykresu baz danych (jednoznacznie Neo4j) PUT struktura wykresu w dół do warstwy pamięci masowej i wykonaj śledzenie wskaźnika (z wieloma optymalizacjami) na poziomie rekordu węzła. Tak więc, podczas przechodzenia przez wykres, nie trzeba dotykać więcej niż bieżący subgraph w dół do warstwy pamięci masowej, dzięki czemu można przechodzić części danych bez dotykania całego wykresu, co powoduje stałą wydajność dla wielu interesujących scenariuszy .

Powiązane problemy