Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Graph databases - why and how
2
O mnie Chief Architekt w
Architekt i TeamLeader w jednym z największych projektów w .NET w Polsce Zajmuję się systemami rozproszonymi i tym co można wywnioskować z danych Po godzinach No i można mnie spotkać na rekrutacji IndexOutOfRange.com @maklipsa
3
Agenda - Grafy Bazy grafowe Wydajność Zastosowania
Neo4j i Cypher – demo Kiedy stosować IndexOutOfRange.com @maklipsa
4
Graf IndexOutOfRange.com @maklipsa
5
Graf G=(E,V) IndexOutOfRange.com @maklipsa
Leonhard Euler Królewiec (obecny Kaliningrad) G=(E,V) IndexOutOfRange.com @maklipsa
6
Graf IndexOutOfRange.com @maklipsa
Leonhard Euler Królewiec (obecny Kaliningrad) IndexOutOfRange.com @maklipsa
7
Graf IndexOutOfRange.com @maklipsa
Leonhard Euler Królewiec (obecny Kaliningrad) IndexOutOfRange.com @maklipsa
8
Graf IndexOutOfRange.com @maklipsa
Leonhard Euler Królewiec (obecny Kaliningrad) IndexOutOfRange.com @maklipsa
9
Odrobina historii
10
Historia baz relacyjnych
1970 – Edgar F. Codd – model relacyjny Co innego działo się latach 70? Znaczący spadek ceny pamięci RAM – tylko 734$ za 1 MB IBM 3310 oferuje 100MB dyski 1971 Intel 4004 – 740kHz, 8 bitów Cena – 5 lat temu wynosiła 2642$ Intell 4004 4004 – 740Mhz, 8008 – 800khz, Co z tego wynika? Relacje w bazach relacyjnych były po to by zaoszczędzić miejsce. Formy normalne Efektem tego jest, że bazy relacyjne skaluje się wzwyż, czyli dodając procesorów i pamięci na jednej maszynie 1974 Intel 8008 – 800kHz, 16 bitów, 1MB pamięci 1977 powstaje Oracle, apple 1 1978 Intel 8086 – 4MHz- 10MHz IndexOutOfRange.com @maklipsa
11
Historia baz grafowych
1736 – Problem mostów 1852 – Problem pokolorowania mapy 1936 – Książka „Teoria Grafów” 1948 – ENIAC 1969 – Częściowe rozwiązanie problemu mapy 1994 – Rozwiązanie problemu mapy 2002 – Pentium 4 3,8GHz 2003 – Pierwsze komercyjne bazy grafowe IndexOutOfRange.com @maklipsa
12
Stan obecny Procesowanie Przechowywanie Natywne Natywne
Procesowanie, a niekoniecznie wyszukiwanie Jest ich dużo. Ja znam 3 bazy relacyjne – SQL Server, Oracle, MySql. No i Postgres, który stara się być relacyjno – obiektowy FlockDB – baza grafowa dla ubogich – pobiera tylko bezpośrednie dzieci InfiniteGraph – baza w której to miejsce przechowywania jest klastrowane, a nie sama baza. Microsoft graph engine (Projekt trinity) – rozproszona baza klucz wartość, bez języka wyszukiwania Titan – ognostyczne względem bazy (Casandra/Hbase) oparty na enginie grafowym od apache Affinity – storzona z myślą o IoT OrientDB – ulubieniec baza grafowa, dokumentowa, klucz/wartość i obiektowa , no i wspierają zapytania SQL – więcej mieć nie można . Kierowana do olbrzymich grafów. *dex (teraz Sparksee) – dostępna nawet na iOS i Androida. Baza o małej latencji Neo4j – baza z możliwością rozproszenia, grafowy silnik przechowywania, SQL-owy jezyk zapytań. AllegroGraph – implementacja standardu W3(tych od internetu) RDFS (czyli pomysłu na oznaczenie semantyczne każdego linku w internecie) HypergroupDB – baza stworzna z myślą o przetwarzaniu wiedzy Przechowywanie Natywne IndexOutOfRange.com @maklipsa
13
Zastosowania
14
Pranie brudnych pieniędzy
IndexOutOfRange.com @maklipsa
15
Podpowiedzi IndexOutOfRange.com @maklipsa
16
Rozpoznawanie języka naturalnego
IndexOutOfRange.com @maklipsa
17
Rozpoznawanie języka naturalnego
MATCH (person:Person)–[:IS_FRIEND_OF]->(friend), (friend)–[:LIKES]->(restaurant), (restaurant)–[:LOCATED_IN]->(loc:Location), (restaurant)–[:SERVES]->(type:Cuisine) WHERE (person.name = ’Philip’ AND loc.location=’New York’ AND type.cuisine=’Sushi’ RETURN restaurant.name IndexOutOfRange.com @maklipsa
18
Rozpoznawanie języka naturalnego
IndexOutOfRange.com @maklipsa
19
New York Times - apple Jabłko Apple inc. Produkty Tim Cook Film (y)
Gatunki Właściwości odżywcze Dane handlowe Firmy handlujące Apple inc. Pracownicy Firmy powiązane Produkty Tim Cook Film (y) Odcinek Star Trek Apple Records Rosyjska partia ... IndexOutOfRange.com @maklipsa
20
New York Times IndexOutOfRange.com @maklipsa
21
Cookit IndexOutOfRange.com @maklipsa
Recipe i Ingredient jako główne encje Bulion i risotto grzybowe z truflami IndexOutOfRange.com @maklipsa
22
Wydajność
23
Wydajność – można inaczej
Relacyjne Grafowe IndexOutOfRange.com @maklipsa
24
Wydajność – trawersowanie
IndexOutOfRange.com @maklipsa
25
Wydajność – trawersowanie
IndexOutOfRange.com @maklipsa
26
Wydajność – trawersowanie
IndexOutOfRange.com @maklipsa
27
Wydajność – trawersowanie
IndexOutOfRange.com @maklipsa
28
Wydajność – przechowywanie
Pamięciowe Rozmiar grafu jest ograniczony przez RAM Dużo algorytmów grafowych i doskonała wizualizacja Dyskowe Rozmiar grafu jest ograniczony przez dysk Zoptymalizoweane do grafów atrybutowych Klastry Ograniczony przez sumę pamięci RAM klastra Zoptymalizowane na algorytmy rozproszone IndexOutOfRange.com @maklipsa
29
Wydajność – testy Twitter z 2009 roku Operacje
1,67 miliarda obserwowań 41,7 milionów userów Operacje Tworzenie kont – 1% Publikowanie tweetów – 15% Oczyt – 76% Rekomendacje – 7% IndexOutOfRange.com @maklipsa
30
Wydajność – testy Przechowywanie danych Obliczenia
6 c1.4xl Nodów Casandry Obliczenia 40 m1.small Obsługa transakcji i zapytań Titan c1.4xl – 4x 2.9 i 7.5 Gb Ramu m1.small – niemal najmniejszy serwer amazonowy – 2.5 2GB Ramu IndexOutOfRange.com @maklipsa
31
Wydajność – testy Typ transakcji Liczba trx Ważona czasu Std czasu
Tworzenie konta 379,019 115,15ms 5,88ms Tweetowanie 7,580,955 18,54ms 6,34ms Odczyt 37.936,184 6,29ms 1,62ms Rekomendacje 3.793,863 67,65ms 13,89ms Total 49.690,061 Czas trwania 2,3h Średnia 5.900 trx/sek Peek 10,300 trx/sek Kosztowało – 11$ za godzinę IndexOutOfRange.com @maklipsa
32
Neo4j
33
Neo4j db-engines.com – 20 pozycja, 1 w bazach grafowych Drivery dla:
Java .NET JavaScript Python Ruby PHP and R, Go, Clojure, Perl, Haskell Cypher jako standard Jest wersja darmowa Algorytmy grafowe powstwały na super komputery Bazy grafowe powstawały do skalowania wszerz nie wzwyrz IndexOutOfRange.com @maklipsa
34
Demo
35
Wydajność – testy Kiedy stosować: Kiedy NIE stosować:
Dane hierarchiczne Ważniejsze są relacje, niż atrybuty obiektów Wyszukiwanie wzorów w danych Do lepszej wizualizacji danych Wyciągnąć sens z danych Kiedy NIE stosować: Systemów gdzie ważniejsze są atrybuty obiektów niż relacje Uwaga z ACIDowe transakcje Zamiast baz reacyjnych Zamiast baz relacyjnych – nie. Jako uzupełnienie - tak IndexOutOfRange.com @maklipsa
36
Pytania?
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.