1 / 45

NoSQL adatbázis-kezelők

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 )

Télécharger la présentation

NoSQL adatbázis-kezelők

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Szárnyas Gábor (szarnyas@db.bme.hu) 2012. október 11. NoSQL adatbázis-kezelők

  2. Relációs adatbázisok 1970–

  3. 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)

  4. 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?

  5. 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#;

  6. 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

  7. 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

  8. Tranzakciók – ACID garanciák • Atomicity • Consistency • Isolation • Durability

  9. Big Data Az SQL korlátai

  10. Gartner: HypeCyclefor Big Data

  11. Skálázhatóság • Vertikális • Horizontális

  12. Elosztott architektúrák • Megosztott memória (sharedmemory) • Megosztott lemez (shareddisk) • Megosztás néküli (sharednothing) (1986)

  13. Szerverek száma a webes világban

  14. NoSQL 2005–

  15. 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.

  16. CAP • Consistency, Availability, Partitiontolerance C A P

  17. CAP • Consistency, Availability, Partitiontolerance C A P

  18. CAP • Consistency, Availability,Partitiontolerance C A P

  19. CAP • Consistency,Availability, Partitiontolerance C A P

  20. 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

  21. 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

  22. Google cikkek (2004–2006) • NoSQL rendszerek elméleti alapja • GoogleFile System • Chubby • BigTable • MapReduce • Paxos Made Live

  23. Érdekesség: eredeti Paxos cikk

  24. 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

  25. 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

  26. Konzisztenciakövetelmények • Google • Gmail: „readyourwrites” konzisztenciamodell • Amazon • vásárlói kosár: „alwayswrite” modell • facebook • státuszok, lájkok

  27. ACID–BASE • Atomicity • Consistency • Isolation • Durability • BasicallyAvailable • Softstate • Eventuallyconsistent

  28. NoSQL adatbázisok típusai • Kulcs-érték tárolók • Dokumentumtárolók • Oszlopcsaládok • Gráfadatbázisok

  29. Kulcs-érték tárolók • Nagyon egyszerű API: • get(key) • put(key, value) • delete(key) • list(prefix)

  30. Kulcs-érték tárolók • Implementációk

  31. Kulcs-érték tárolók felhasználása • Munkamenetek tárolása • Egyszerű felhasználói profilok • Vásárlói kosár

  32. Dokumentumtárolók • Szemistrukturált adatok • Nincs előre definiált séma

  33. 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"] } ]}

  34. Dokumentumtárolók • Implementációk

  35. Dokumentumtárolók • Naplózás • Tartalomkezelő rendszerek (CMS) • Valós idejű adatelemzés

  36. Oszlopcsaládok • Sorok = kulcs-érték párok

  37. Oszloptárolók • Implementációk

  38. Oszloptárolók használata • Dokumentumtárolókhoz hasonló • Naplózás • CMS • Analitika: Hadoop

  39. Gráfadatbázisok • G = (V, E) helyett tulajdonsággráfok

  40. Gráfadatbázisok • Implementációk

  41. Gráfadatbázisok • „Connecteddata” • Gráffal kényelmesen reprezentálható adatok • Ajánlórendszerek

  42. 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

  43. Linkek • NoSQL adatbázis-kezelők:http://nosql-database.org/ • MongoDBshell: http://try.mongodb.org/ • Neo4j lekérdezések: http://console.neo4j.org/

  44. Köszönöm a figyelmet!

More Related