bazydanychnosql - cs.put.poznan.pl · planprezentacji 1 motywacja relacyjnebazydanych...

37
Bazy danych NoSQL wprowadzenie Szymon Francuzik [email protected] Poznań, 16.05.2012 Szymon Francuzik [email protected] () Bazy danych NoSQL Poznań, 16.05.2012 1 / 37

Upload: vunhi

Post on 17-Dec-2018

215 views

Category:

Documents


0 download

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

Model relacyjny

Szymon Francuzik [email protected] ()Bazy danych NoSQL Poznań, 16.05.2012 4 / 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