460 likes | 635 Views
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 )
E N D
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 QUEryLanguage) • 1986: az SQL ANSI szabvány(StructuredQueryLanguage)
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?
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.DB FROM ÁRU INNER JOIN MENNY ON ÁRU.ÁRUKÓD = MENNY.ÁRUKÓD WHERE ÁRU.ÁRUKÓD = "X2" AND DÁTUM = #10/11/2012#;
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
Az SQL erősségei • Kiforrott elmélet és technológia • Sok szakember • Sok szoftveres eszköz • Bevált módszerek (bestpractices) • Robusztus rendszerek • Ad hoc lekérdezések • Tranzakciók
Tranzakciók – ACID garanciák • Atomicity • Consistency • Isolation • Durability
Big Data Az SQL korlátai
Skálázhatóság • Vertikális • Horizontális
Elosztott architektúrák • Megosztott memória (sharedmemory) • Megosztott lemez (shareddisk) • Megosztás néküli (sharednothing) (1986)
NoSQL 2005–
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 • Partitiontolerance • Elosztott rendszerben egy időben nem garantálható mindhárom tulajdonság.
CAP • Consistency, Availability, Partitiontolerance C A P
CAP • Consistency, Availability, Partitiontolerance C A P
CAP • Consistency, Availability,Partitiontolerance C A P
CAP • Consistency,Availability, Partitiontolerance C A P
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
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
Google cikkek (2004–2006) • NoSQL rendszerek elméleti alapja • GoogleFile System • Chubby • BigTable • MapReduce • Paxos Made Live
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
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
Konzisztenciakövetelmények • Google • Gmail: „readyourwrites” konzisztenciamodell • Amazon • vásárlói kosár: „alwayswrite” modell • facebook • státuszok, lájkok
ACID–BASE • Atomicity • Consistency • Isolation • Durability • BasicallyAvailable • Softstate • Eventuallyconsistent
NoSQL adatbázisok típusai • Kulcs-érték tárolók • Dokumentumtárolók • Oszlopcsaládok • Gráfadatbázisok
Kulcs-érték tárolók • Nagyon egyszerű API: • get(key) • put(key, value) • delete(key) • list(prefix)
Kulcs-érték tárolók • Implementáció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
Dokumentumtárolók • Szemistrukturált adatok • Nincs előre definiált séma
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"] } ]}
Dokumentumtárolók • Implementációk
Dokumentumtárolók • Naplózás • Tartalomkezelő rendszerek (CMS) • Valós idejű adatelemzés
Oszlopcsaládok • Sorok = kulcs-érték párok
Oszloptárolók • Implementációk
Oszloptárolók használata • Dokumentumtárolókhoz hasonló • Naplózás • CMS • Analitika: Hadoop
Gráfadatbázisok • G = (V, E) helyett tulajdonsággráfok
Gráfadatbázisok • Implementációk
Gráfadatbázisok • „Connecteddata” • Gráffal kényelmesen reprezentálható adatok • Ajánlórendszerek
Neo4j gráfadatbázis lekérdezése SELECT Group.*, Person_Group.* FROM Person JOIN Person_GroupON Person.id =Person_Group.person_id JOIN Group ON Person_Group.Group_id=Group.id WHERE Person.name = "Bridget" START person=node:Person(name = 'Bridget') MATCH person-[r:belongs_to]->group RETURN group, r
Linkek • NoSQL adatbázis-kezelők:http://nosql-database.org/ • MongoDBshell: http://try.mongodb.org/ • Neo4j lekérdezések: http://console.neo4j.org/