bazydanychnosql - cs.put.poznan.pl · planprezentacji 1 motywacja relacyjnebazydanych...
TRANSCRIPT
Bazy danych NoSQLwprowadzenie
Szymon [email protected]
Poznań, 16.05.2012
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 1 / 37
Plan prezentacji
1 MotywacjaRelacyjne bazy danychProblemy relacyjnych baz danych
2 NoSQLDefinicjaTypy baz NoSQL
3 Amazon DynamoPrzeznaczenieRealizacja
4 CassandraPrzeznaczenie“Rozpraszanie”API
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 2 / 37
RDBMS
Relacyjne systemy zarządzania bazami danych:relacyjny model danych — Edgar Codd (IBM) — 1970język SQLtransakcjeACID
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 3 / 37
ACID
Atomicity (atomowość)Consistency (spójność)Isolation (izolacja)Durability (trwałość)
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 5 / 37
Wydajność
atomowość — konieczność logowania operacjispójność — weryfikacja poprawnościizolacja — blokowanie/wycofywanietrwałość — zapis do pamięci trwałej
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 6 / 37
Skalowalność
Możliwość zwiększania wydajności systemu wraz zrosnącym zapotrzebowaniem.
skalowanie wertykalne (ang. scale up)skalowanie horyzontalne (ang. scale out)
I sharding (partycjonowanie poziome)I partycjonowanie pionoweI repliki do odczytu
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 7 / 37
Model danych
relacyjny model danych nie zawsze wygodnyI normalizacja vs. efektywnośćI brakujące dane
trudności przy zmianie schematu danych
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 8 / 37
CAP Theorem (Brewer’s conjecture)
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 9 / 37
PACELC
Partition
yes no
Availability Consistency Latency Consistency
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 10 / 37
Problemy podsumowanie
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 11 / 37
Definicja NoSQL
Wikipedia:NoSQL jest klasą systemów zarządzania baządanych nie pasujących do powszechniestosowanego modelu relacyjnych baz danych:
brak języka SQL (w szczególności brakoperacji JOIN)nierelacyjny model danychnie musi zapewniać ACIDrozproszona, odporna na awariearchitektura
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 12 / 37
Alternatywa dla ACID
BASE:Basic AvailabilitySoft-stateEventual consistency
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 13 / 37
Podział ze względu na reprezentację danych
klucz-wartośćhierarchiczna struktura klucz-wartość (“BigTable-like”)dokumentowegrafowe
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 14 / 37
Bazy klucz-wartość
przechowują pary klucz-wartośćdostęp do danych jedynie po kluczuprzykłady:
I Berkeley DBI RiakI Dynamo
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 15 / 37
Bazy z hierarchiczną strukturą klucz-wartość
wzorowane na BigTable (Google)każdy wiersz może mieć przyporządkowany inny zestaw kolumnczęściowo ustrukturalizowaneprzykłady:
I HBaseI CassandraI SimpleDB
row-key
columnfamily1 columnfamily1supercolumn1 supercolumn2 col21 col22col1 col2 col1 col3 ...
val5 val6val1 val2 val3 val4 ...
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 16 / 37
Dokumentowe bazy danych
przechowuje dokumenty zamiastwierszy/rekordówdokument: wpis w bazieskładający się z pól(nazwa-wartość)możliwość odwoływania się popolach nie będących kluczempodstawowymprzykłady:
I CouchDBI MongoDBI ThruDB
{ imie: "Jan",
nazwisko: "Kowalski",
nr_indeksu: 98765,
oceny: [5, 4.5, 3, 4]
dzienny: true }
db.students.find({nazwisko:
"Kowalski"})
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 17 / 37
Grafowe bazy danych
węzły, krawędzie (łuki), własnościszybki dostęp do powiązanych danychprzykłady:
I HyperGraphDBI Neo4JI Trinity
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 18 / 37
Amazon Dynamo
baza typu klucz-wartośćstworzona do zarządzania stanem usług oferowanych przez Amazon:
I koszyk zakupów: dziesiątki milionów zapytań, do 3 mln transakcjizakupu dziennie
I sesje klientów: setki tysięcy równoległych sesjiI inne usługi: katalog produktów, system rekomendacji
rozproszona architektura — serwery rozproszone po całym świeciespójność ostateczna
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 19 / 37
Cele
niezawodność (dostępność) — nawet kosztem spójnościskalowalność pozioma — commodity hardwareSLA — ograniczenia na czas odpowiedzi
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 20 / 37
Dlaczego nie RDBMS
dostęp do danych poprzez klucz podstawowy — nie potrzeba modelurelacyjnegobrak operacji odwołujących się do kilku elementów — nie potrzebatransakcjiRDBMS wymaga specjalistów i drogiego sprzętuograniczona dostępność w przypadku awariisłaba skalowalność pozioma — brak wsparcia dla automatycznegopartycjonowania
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 21 / 37
Interfejs
komunikacja po HTTPoperacje:
I get(key) — odsyła wartość oraz kontekstI put(key, context, value)
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 22 / 37
Partycjonowanie danych
consistent hashing:na podstawie klucza generowany hash MD5 (128b)przestrzeń haszy podzielona między wirtualne serwerydo każdego fizycznego serwera przypisana określona liczba serwerówwirtualnych
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 23 / 37
Replikacja
możliwość zdefiniowania ilości replikreplikacja wpisu na N kolejnych replik w pierścieniulista preferencji replikmożliwość ustawienia parametru R i W — sloppy quorumuspójnianie stanu:
I uspójnianie przy odczycieI anti-entropyI hinted handoff
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 24 / 37
Wielowersyjność obiektów
wersja obiektu opisywana przez zegarwektorowy:TS1 : {(S1,3), (S2,5), (S3,1)}TS2 : {(S1,3), (S2,4), (S3,2)}TS3 : {(S1,3), (S2,6), (S3,2)}przechowywanie wersji powstałychwspółbieżnie do czasu uspójnienia przezklientaprzy odczycie klient otrzymuje wszystkiedostępne wersje obiektu
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 25 / 37
Cassandra
hierarchiczna struktura klucz wartośćFacebook — indeksowanie na potrzeby przeszukiwania skrzynkiużytkownika
I setki milionów użytkownikówI 600+ rdzeniI rozmiar indeksu: 120+ TB
open source
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 26 / 37
Struktura danych
przestrzeń kluczy (keyspace)rodzina kolumn (column family) — zdefiniowane statycznie
I super kolumny (super columns)I kolumny (columns)
wiersz (row) — pojedynczy element z przypisanymikolumnami/super-kolumnami
row-key
columnfamily1 columnfamily1supercolumn1 supercolumn2 col21 col22col1 col2 col1 col3 ...
val5 val6val1 val2 val3 val4 ...
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 27 / 37
Reprezentacja danych
klucz i wartość reprezentowana jako tablica bajtówkolumny i super-kolumny posortowane po nazwach lub czasiemodyfikacjiindeksowanie kluczy
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 28 / 37
Indeksowanie
Adam
index_by_users_interactionsMarek Kasia ...
m100 m252 m124 m511 m600 ...- - - - ...
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 29 / 37
Partycjonowanie danych
consistent hashingdynamiczne równoważenie obciążeniadwie strategie podziału:
I random partitionerI ordered preserving partitioner
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 30 / 37
Replikacja
możliwość konfigurowania liczby replikstrategia rozmieszczania replik:
I przydział prostyI świadoma topologi sieci: rack aware, datacenter aware
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 31 / 37
Kontrola poziomu spójności
Zapisy:anyonequorumlocal_quorumeach_quorumall
Odczyty:onequorumlocal_quorumeach_quorumall
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 32 / 37
Uspójnianie replik
uspójnianie przy odczycieanti-entropyhinted handoff
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 33 / 37
Interfejs
Thrift — RPC framework for cross-language service developmentwspierane języki:C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa,JavaScript, Node.js, Smalltalk, OCamlgotowe biblioteki dla wybranych języków programowania
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 34 / 37
Bibliografia
http://nosql-database.org/
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 35 / 37
Bibliografia
http://nosqltapes.com/
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 36 / 37
Bibliografia
http://nosqlsummer.org/
Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 37 / 37