nosql adatbázis-kezelők

45
NoSQL adatbázis- kezelők Szárnyas Gábor ([email protected]) 2012. október 11.

Upload: luke-schwartz

Post on 31-Dec-2015

72 views

Category:

Documents


1 download

DESCRIPTION

Szárnyas Gábor ( szarnyas @ db.bme.hu ) 2012. október 11. NoSQL adatbázis-kezelők. Relációs adatbázisok. 1970–. Relációs adatmodell, SQL. Codd : A Relational Model of Data for Large Shared Data Banks, 1970 1970-es évek eleje: SEQUEL ( Structured English QUEry Language ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: NoSQL  adatbázis-kezelők

NoSQL adatbázis-kezelők

Szárnyas Gábor ([email protected])2012. október 11.

Page 2: NoSQL  adatbázis-kezelők
Page 3: NoSQL  adatbázis-kezelők

Relációs adatbázisok1970–

Page 4: NoSQL  adatbázis-kezelők

Relációs adatmodell, SQL

Codd: A Relational Model of Data for Large Shared Data Banks, 1970

1970-es évek eleje: SEQUEL (Structured English QUEry Language)

1986: az SQL ANSI szabvány(Structured Query Language)

Page 5: NoSQL  adatbázis-kezelők

Relációs lekérdezések

ÁRU(ÁRUKÓD, ÁRUNÉV, EGYSÉGÁR) MENNYISÉG(DÁTUM, ÁRUKÓD, DB)

Lekérdezés: Mi az X2 kódú árú neve és mennyit adtak el belőle 2012. október 11-én?

Page 6: NoSQL  adatbázis-kezelők

Relációs lekérdezések

ÁRU(ÁRUKÓD, ÁRUNÉV, EGYSÉGÁR) MENNYISÉG(DÁTUM, ÁRUKÓD, DB)

πÁRUNÉV, DB(σÁRUKÓD='X2' ^ DÁTUM= '20121011(mennyiség⋈áru)

{ n, d | MENNYISÉG('20121011', 'X2', d) ^ (e) ÁRU('X2', n, e)}

SELECT ÁRU.ÁRUNÉV, MENNY.DBFROM ÁRUINNER JOIN MENNY ON ÁRU.ÁRUKÓD = MENNY.ÁRUKÓDWHERE ÁRU.ÁRUKÓD = "X2" AND DÁTUM = #10/11/2012#;

Page 7: NoSQL  adatbázis-kezelők

Relációs adatbázisok ma

Kevés, nagy szereplő Zárt forráskódú

Oracle Database Microsoft SQL Server IBM DB2

Nyílt forráskódú MySQL ( Oracle) PostgreSQL

Page 8: NoSQL  adatbázis-kezelők

Az SQL erősségei

Kiforrott elmélet és technológia Sok szakember Sok szoftveres eszköz Bevált módszerek (best practices) Robusztus rendszerek Ad hoc lekérdezések Tranzakciók

Page 9: NoSQL  adatbázis-kezelők

Tranzakciók – ACID garanciák

Atomicity Consistency Isolation Durability

Page 10: NoSQL  adatbázis-kezelők

Big DataAz SQL korlátai

Page 11: NoSQL  adatbázis-kezelők

Gartner: Hype Cycle for Big Data

Page 12: NoSQL  adatbázis-kezelők

Skálázhatóság

Vertikális Horizontális

Page 13: NoSQL  adatbázis-kezelők

Elosztott architektúrák

Megosztott memória (shared memory)

Megosztott lemez (shared disk) Megosztás néküli (shared nothing)

(1986)

Page 14: NoSQL  adatbázis-kezelők

Szerverek száma a webes világban

Page 15: NoSQL  adatbázis-kezelők

NoSQL2005–

Page 16: NoSQL  adatbázis-kezelők

A CAP tétel (2002)

Sejtés: Eric Brewer, 2000 Tétel: Nancy Lynch, Seth Gilbert, 2002

Tulajdonságok: Consistency (nem az ACID konzisztenciája) Availability Partition tolerance

Elosztott rendszerben egy időben nem garantálható mindhárom tulajdonság.

Page 17: NoSQL  adatbázis-kezelők

CAP

Consistency, Availability, Partition tolerance

C

P

A

Page 18: NoSQL  adatbázis-kezelők

P

CAP

Consistency, Availability, Partition tolerance

C A

Page 19: NoSQL  adatbázis-kezelők

A

CAP

Consistency, Availability, Partition tolerance

C

P

Page 20: NoSQL  adatbázis-kezelők

CAP

Consistency, Availability, Partition tolerance

C

P

A

Page 21: NoSQL  adatbázis-kezelők

Teljesítménymetrikák

Áteresztőképesség [adategység/s] Késleltetés [s]

A CAP tétel nem beszél teljesítményről

Page 22: NoSQL  adatbázis-kezelők

A késleltetés ára

Amazon +100 ms késleltetés 1% csökkenés az eladásokban

Google +500 ms késleltetés 20% bevételcsökkenés

Page 23: NoSQL  adatbázis-kezelők

Google cikkek (2004–2006)

NoSQL rendszerek elméleti alapja

Google File System Chubby BigTable MapReduce Paxos Made Live

Page 24: NoSQL  adatbázis-kezelők

Érdekesség: eredeti Paxos cikk

Page 25: NoSQL  adatbázis-kezelők

NoSQL „mozgalom”

2005 óta: nyílt forráskódú adatbázis-kezelők

2009: no:sql(east) konferencia

Azóta 100+ nemrelációs adatbázis-kezelő

Fő tulajdonságok: Nemrelációs adatmodell Elosztott működés Nyílt forráskód Horizontális skálázhatóság

Page 26: NoSQL  adatbázis-kezelők

Konzisztenciamodellek

A CAP tétel következménye A fejlesztők erős konzisztenciát

szeretnének Gyenge konzisztencia: hibás

működés? Fokozatos konzisztencia:

kompromisszum

gyenge konzisztencia

fokozatos konzisztencia

erős konzisztencia

erős konzisztencia több adategységen

Page 27: NoSQL  adatbázis-kezelők

Konzisztenciakövetelmények

Google Gmail: „read your writes”

konzisztenciamodell Amazon

vásárlói kosár: „always write” modell facebook

státuszok, lájkok

Page 28: NoSQL  adatbázis-kezelők

ACID–BASE

Basically Available

Soft state Eventually

consistent

Atomicity Consistency Isolation Durability

Page 29: NoSQL  adatbázis-kezelők

NoSQL adatbázisok típusai

Kulcs-érték tárolók Dokumentumtárolók Oszlopcsaládok Gráfadatbázisok

Page 30: NoSQL  adatbázis-kezelők

Kulcs-érték tárolók

Nagyon egyszerű API: get(key) put(key, value) delete(key) list(prefix)

Page 31: NoSQL  adatbázis-kezelők

Kulcs-érték tárolók

Implementációk

Page 32: NoSQL  adatbázis-kezelők

Kulcs-érték tárolók felhasználása

Munkamenetek tárolása Egyszerű felhasználói profilok Vásárlói kosár

Page 33: NoSQL  adatbázis-kezelők

Dokumentumtárolók

Szemistrukturált adatok Nincs előre definiált séma

Page 34: NoSQL  adatbázis-kezelők

Dokumentumtárolók – JSON{"document": [ { "firstname": "Klemens", "city": "Stuttgart", "age": "42" }, { "firstname": "Rajesh", "city": "Delhi", "age": "29" }, { "firstname": "Colin", "company": "Oracle" }, { "cars": ["BMW 320d", "Jaguar XF"] }]}

firstname

city age company

Klemens Stuttgart

42 NULL

Rajesh Delhi 29 NULL

Colin NULL NULL Oracle

Page 35: NoSQL  adatbázis-kezelők

Dokumentumtárolók

Implementációk

Page 36: NoSQL  adatbázis-kezelők

Dokumentumtárolók

Naplózás Tartalomkezelő rendszerek (CMS) Valós idejű adatelemzés

Page 37: NoSQL  adatbázis-kezelők

Oszlopcsaládok

Sorok = kulcs-érték párok

kulcs

oszlopkulcs0 oszlopkulcs1 oszlopkulcsN...

...érték0 érték1 értékN

12100

user_ID text datetime

bmestudentjust decomposed a schema

to 3NF #db #exam2011-01-03

07:30:11

12187

user_ID text datetime

bmestudentjust decomposed a schema

to BCNF #db #exam2011-01-03

07:41:36

Page 38: NoSQL  adatbázis-kezelők

Oszloptárolók

Implementációk

Page 39: NoSQL  adatbázis-kezelők

Oszloptárolók használata

Dokumentumtárolókhoz hasonló Naplózás CMS Analitika: Hadoop

Page 40: NoSQL  adatbázis-kezelők

Gráfadatbázisok

G = (V, E) helyett tulajdonsággráfok

type = personfirstname = Colin

age = 51

type = personfirstname = Rajesh

age = 29

type = cityname = Dublin

type = cityname = Delhi

type = companyname = Oracle

type = carname = BMW 320d

type = worksfrom = 2000-01-01

type = owns

type = lives

type = repaireddate = 2010-12-14

type = lives

type = knows

type = knows

Page 41: NoSQL  adatbázis-kezelők

Gráfadatbázisok

Implementációk

Page 42: NoSQL  adatbázis-kezelők

Gráfadatbázisok

„Connected data” Gráffal kényelmesen reprezentálható

adatok Ajánlórendszerek

Page 43: NoSQL  adatbázis-kezelők

Neo4j gráfadatbázis lekérdezése

SELECT Group.*, Person_Group.*FROM PersonJOIN Person_Group ON Person.id = Person_Group.person_idJOIN Group ON Person_Group.Group_id = Group.idWHERE Person.name = "Bridget"

START person = node:Person(name = 'Bridget')MATCH person-[r:belongs_to]->groupRETURN group, r

Page 44: NoSQL  adatbázis-kezelők

Linkek

NoSQL adatbázis-kezelők:http://nosql-database.org/

MongoDB shell: http://try.mongodb.org/

Neo4j lekérdezések: http://console.neo4j.org/

Page 45: NoSQL  adatbázis-kezelők

Köszönöm a figyelmet!