*Grafomania z Neo4j

advertisement
*Grafomania z
Neo4j
Praktyczne wprowadzenie do grafowej
bazy danych.
Jak zamodelować relacyjną bazę danych
reprezentującą następujący fragment
rzeczywistości:
Serwis WWW opisuje pracowników różnych firm poprzez
nazwisko, płacę podstawową i płacę dodatkową.
Każdy pracownik pracuje na co najmniej jednym
stanowisku i posiada swoją historię zatrudnienia.
Stanowiska opisane są poprzez nazwę oraz widełki
płacowe.
Pracownicy zorganizowani są w zespoły.
Zespoły zorganizowane są w taki sposób, że każdy
zespół może mieć jeden „nadzespół” i wiele
podzespołów.
Każdy zespół może mieć jednego leadera.
*zadanie
*Co z efektywnością połączeń jeśli ilość
pracowników, stanowisk i zespołów zacznie
rosnąć?
*Co jeśli będziemy chcieli zmienić schemat, np.
zezwolić na to, aby zespoły miały więcej niż
jeden nadzespół?
*Co jeśli będziemy chcieli dodać kolejny atrybut
do jednej z encji?
*Na ile prosty jest proces projektowania i
normalizacji?
*Co ze skalowalnością horyzontalną?
*problemy?
Problemy związane ze skalowalnością
horyzontalną próbuje się rozwiązać
poprzez:
*denormalizację relacji,
*usuwanie i/lub rozluźnianie ograniczeń,
*rozluźnianie polityki transakcyjności.
*rozwiązania???
*Bazy odchodzące od paradygmatów
relacyjnych.
*Projektowane pod odzwierciedlanie
struktury danych oraz, nierzadko, pod
skalowalność horyzontalną.
*Brak założeń dotyczących
normalizacji/denormalizacji.
*Specjalizowane pod konkretne
zastosowania.
*NoSQL ?=
alternatywa
*bazy kolumnowe (Columnar Stores, Wide
Column Stores, Sorted Ordered ColumnOriented Stores)
*bazy klucz/wartość (key/value stores)
*bazy dokumentowe (Document
stores/databases)
*bazy grafowe (Graph databases)
*bazy obiektowe (Object databases)
*bazy NoSQL
Grafową bazą danych nazywamy taką bazę, która
przechowuje dane i związki miedzy nimi w postaci grafu,
najczęściej skierowanego. Zgodnie z definicja, graf
skierowany (zorientowany) to para G = <V;E>, gdzie V to
zbiór wierzchołków (węzłów) o liczności |V| = n, a E to zbiór
krawędzi (łuków) o liczności |E| = m, przy czym E jest relacja
dwuargumentowa w V taka, że E należy do zbioru V x V . Tak
zdefiniowana struktura danych jest wysoce generyczna i
pozwala na przechowywanie i odwzorowywanie szerokiej
gamy informacji.
Jakie zalety i wady ma graf w stosunku do
RDBMS?
*grafowa baza
danych
*pełne wsparcie dla transakcji ACID,
*możliwość rozproszenia po wielu
serwerach (w wersji komercyjnej),
*do 34 mld węzłów, 34 mld krawędzi, 68 mld
atrybutów,
*unikanie operacji JOIN, zwiększenie
efektywności poprzez trawersowanie
sąsiedztwa,
*dynamiczna struktura, możliwość dodawania i
usuwania atrybutów z węzła,
*dlaczego Neo4j?
*generyczne węzły i krawędzie, brak ich
typowania,
*indeksowanie w oparciu o Apache Lucene,
*łatwość projektowania (whiteboardfriendliness),
*możliwość embeddowania bazy w
aplikacji i używania API w języku Java,
*możliwość postawienia samodzielnej instancji
i obsługi przez API RESTowe,
*dlaczego Neo4j?
[2]
*możliwość wydawania zapytań w językach
Gremlin i Cypher,
*graficzna, przeglądarkowa konsola serwera,
*narzędzia wspierające programowanie (biblioteki
implementujące API RESTowe oraz wspierające
operowanie danymi, środowisko Neoclipse),
*importer skryptów SQL,
*wsparcie dla technologii semantycznych (RDF,
SPARQL).
*dlaczego Neo4j?
[3]
*dane w bazie danych przechowywane są
w węzłach i w krawędziach
*każdy węzeł oraz krawędź posiadają
atrybuty opisane przez parę klucz-wartość
*obowiązkowym atrybutem jest id
nadawane przez bazę danych
*krawędzie dodatkowo posiadają
obowiązkowy atrybut type, określający typ
relacji
*dane w Neo4j
*Neo4j intro
Serwis WWW opisuje pracowników różnych firm poprzez
nazwisko, płacę podstawową i płacę dodatkową.
Każdy pracownik pracuje na co najmniej jednym stanowisku
i posiada swoją historię zatrudnienia.
Stanowiska opisane są poprzez nazwę oraz widełki płacowe.
Pracownicy zorganizowani są w zespoły.
Zespoły zorganizowane są w taki sposób, że każdy zespół
może mieć jeden „nadzespół” i wiele podzespołów.
Każdy zespół może mieć jednego leadera.
*projekt bazy
Jak zaprojektować bazę Neo4j?
*wykorzystanie
Jak zaimplementować i wykorzystać
zaprojektowany model w praktyce?
*konsola
graficzna
Mała rzecz a cieszy.
*Spring Data
Neo4j
Tworzenie aplikacji na grafowych bazach danych w
oparciu o adnotowane obiekty POJO.
*dziękuję za
uwagę
(to jest ten moment, kiedy zadajecie
pytania)
Download