A MongoDB bemutatása Az OE adatkörén keresztül. Sári Zoltán Adatbázis-kezelés elmélete és gyakorlata 2013/2014. II. félév

Hasonló dokumentumok
Tematika. MongoDB koncepció JSON Schemaless logika Replicaset képzés Sharding Aggregate framework

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Szathmáry László Debreceni Egyetem Informatikai Kar

SZERVER OLDALI JAVASCRIPT. 8. hét MongoDB, séma tervezés, performancia kérdések

MongoDB THE NOSQL DATABASE. Készítette: Hugyák Tamás v2.1.1

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Virtuális Obszervatórium. Gombos Gergő

Alternatív adatbázisok Gráfadatbázisok

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül

Microsoft SQL Server telepítése

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Informatikai alapismeretek Földtudományi BSC számára

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Tranzakció-kezelés, alapfogalmak. Vassányi István, 2012.

NoSql, Document Store, MongoDB. Gombos Gergő

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Adatbázis rendszerek I

Az adatbázisrendszerek világa

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbázis rendszerek 7. előadás State of the art

RDBMS fejlesztési irányok. Ferris Wheel (óriáskerék) Jim Gray törvényei. Elosztott adatbázisok problémái. Elosztott adatbázisok

Multimédiás adatbázisok

Van-e ingyen-ebéd? Avagy mire elég a nyílt forráskodú Pentaho? Fekszi Csaba Ügyvezető október 4.

Tudásalapú információ integráció

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis-kezelés. Harmadik előadás

ADATBÁZIS-KEZELÉS. Adatbázis-kezelő rendszerek

Adatbázis rendszerek. dr. Siki Zoltán

Adatmodellezés. 1. Fogalmi modell

ADATBÁZISOK, ADATTÁRHÁZAK

SQLServer. Particionálás

MMK-Informatikai projekt ellenőr képzés 4

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

webalkalmazások fejlesztése elosztott alapon

Adatbázis, adatbázis-kezelő

Szárnyas Gábor (BME) diáinak felhasználásával.

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázis kezelés Delphiben. SQL lekérdezések

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

Többfelhasználós és internetes térkép kezelés, megjelenítés

Valós idejű megoldások: Realtime ODS és Database In-Memory tapasztalatok

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

Adatbázis-kezelő rendszerek alkalmazása. MongoDB beadandó feladat Programtervező informatikus szak

Bevezetés: az SQL-be

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

MapReduce paradigma a CAP-tétel kontextusában. Adatb haladóknak. Balassi Márton Adatbázisok haladóknak 2012.

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Nyilvántartási Rendszer

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

BEVEZETÉS Az objektum fogalma

NETinv. Új generációs informatikai és kommunikációs megoldások

Földmérési és Távérzékelési Intézet

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

BASH script programozás II. Vezérlési szerkezetek

Vizuális programozás gyakorlat

Adatbázisok elmélete

Az információs rendszerek adatai

B I T M A N B I v: T M A N

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Component Soft és tovább

A cloud szolgáltatási modell a közigazgatásban

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting

Csima Judit szeptember 6.

Adattípusok. Max. 2GByte

Az információs rendszerek adatai

Adattípusok. Max. 2GByte

Készítette: Szabóné Nacsa Rozália

Relációsémák létrehozása SQL nyelvben

Adatbázis rendszerek SQL nyomkövetés

Intelligens közlekedési rendszerek (ITS)

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

GDi Esri Magyarország Felhasználói Konferencia Timár Gábor: Konkurens adatfeldolgozás ArcGIS rendszerben

Adatbázisok* tulajdonságai

GENERÁCIÓS ADATBÁZISOK A BIG DATA KÜLÖNBÖZŐ TERÜLETEIN

Nem klaszterezett index. Klaszterezett index. Beágyazott oszlopok. Index kitöltési faktor. Indexek tulajdonságai

Web-fejlesztés NGM_IN002_1

Nem klaszterezett index. Beágyazott oszlopok. Klaszterezett index. Indexek tulajdonságai. Index kitöltési faktor

ADATBÁZISOK, ADATTÁRHÁZAK

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

IBM felhő menedzsment

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Pentaho 4: Mindennapi BI egyszerűen. Fekszi Csaba Ügyvezető október 6.

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

Szolgáltatásintegráció (VIMIM234) tárgy bevezető

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Gráf adatbázisok NoSql, neo4j. Gombos Gergő

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Elemi alkalmazások fejlesztése IV.

Átírás:

A MongoDB bemutatása Az OE adatkörén keresztül Sári Zoltán Adatbázis-kezelés elmélete és gyakorlata 2013/2014. II. félév

A prezentáció témája Mi az a MongoDB? Mikor érdemes használni? Hogyan lehet használni? Célom: rávilágítani a tipikus használati esetekre bemutatni a környezetet (architektúra, telepítés) ismertetni a használatot példán keresztül (CRUD) 2 /26

NoSQL technológia Új igények új technológiák (web 2.0, mobileszközök, clouding), big data 3V rengeteg csak félig strukturált adat Relációs modell hátrányai erős strukturális megszorítások = rugalmatlan adatmodell szigorú tranzakció kezelés = elosztottság, skálázhatóság gátjai Új paradigma Cél: nagy teljesítmény + magas rendelkezésre állás + változatos adatok rugalmas kezelése Eszközök: egyszerűsített adatmodell (kulcs-érték, dokumentum, gráf, oszlopcs.) nem deklaratív lekérdezőnyelvek, nincs JOIN backup helyett replikálás gyors tranzakciós modell (konzisztencia alacsonyabb szinten) 3 /26

Mi az a MongoDB? Dokumentumorientált B(J)SON, sémafüggetlen tárolás (nem relációs) javascript alapú lekérdező nyelv (függvényhívások, nem SQL) Nagy teljesítményű indexelés támogatása (id automatikus, másodlagos indexek) in-memory (lapkezelés), query optimizer (legjobb index) analitikus feldolgozás MapReduce-val BI, adatbányászat Skálázható automatikus replikáció (magas rendelkezésre állás) automatikus terhelésmegosztás (horizontális skálázás) Nyílt forráskódú, platform független C++, jól dokumentált, driverek (API), könnyű integrálhatóság Legnépszerűbb NoSQL adatbázis 4 /26

JSON (JavaScript Object Notation) { //objektum "vezeteknev" : "Kovács", //tulajdonság-érték párok "keresztnev" : "János", "kor" : 25, "cim" : { //beágyazott objektum "utcahazszam" : "Fő utca 21.", "varos" : "Budapest", "iranyitoszam" : "1021" }, "telefonszam": [ //tömb { "tipus" : "otthoni", "szam" : "212 555-1234" }, { "tipus" : "munkahelyi", "szam" : "646 555-4567", "mellek " : "312" //bővíthetőség } ] } 5 /26

JSON Jellemzők a JavaScript nyelvből alakult ki adattípusok: String, Number, Boolean, Object, Array, null függvényhívásokkal könnyen feldolgozható objektum megközelítésű emberek számára is olvasható írható Sémafüggetlen egy relációban számos, ritkán használt attribútum JSON esetén nem probléma 2 objektumról más-más információ tárolása JSON Schema: struktúra és az adattípusok ellenőrzése de kevésbé használják, mint az XML sémákat 6 /26

Skálázás és elosztott működés master/slave replikáció horizontális skálázás, automatikus terhelésmegosztás (sharding) 7 /26

MongoDB vs. RDBMS 8 /26

RDBMS vs. MongoDB adatmodell séma hozzáférési nyelv tranzakció kezelés (ACID) RDBMS normalizált, szeparált táblák összekapcsolása (join) relációs séma, struktúra és adattípusok fix (ALTER) SQL (deklaratív) erős, de költséges konzisztencia (konkurenciakezelés + naplózás) MongoDB dokumentum alapú, összetartozó adatok egy dokumentumban sémafüggetlen, dinamikus objektum alapú script + MapReduce gyenge konzisztencia, (atomi műveletek dokumentumokon, readerswriter lock, naplózás dokumentumszinten ekvivalens a tranzakciókezeléssel) 9 /26

RDBMS vs. MongoDB rendelkezésre állás skálázhatóság elosztott működés (CAP) felhasználási terület RDBMS hagyományosan back-up vertikális (egy gép) merev az ACID és a JOIN-ok miatt (CA v. CP, konzis. max) kis adatkészlet, jól strukturáltság, sok aggregáció erős konzisztencia igénye, monolitikus architektúra ERP MongoDB master-slave replikáció késleltetett konzisztencia (időablakon belül) horizontális (több gép) rugalmas, auto-sharding nincsenek komplex join-ok, könnyű párhuzamosítás (AP: késleltetés min) hatalmas adatkészlet változatos és változó struktúra ACID hiánya tolerálható (v. az app layerben) elosztottság, skálázhatóság Webes adatok tárolása 10 /26

Terminológia RDBMS database table row column index table join foreign key primary key partition MongoDB database collection document field index embedded document reference primary key shard 11 /26

Mikor érdemes használni? tartalommenedzsment és közzététel online publikációk, blogok, CMS, metaadat-menedzsment közösségi infrastruktúra fórumok, comment, like-ok felhasználói adatok menedzselése viselkedés loggolása termék és készlet katalógusok e-kereskedelem, eltérő tulajdonság készletek adat hub-ok adatintegráció, heterogén adatforrások adatai aggregációjának historikus tárolása database-as-a-service rugalmas adatbázis kapacitás biztosítás cache server (SQL + NoSQL) 12 /26

Hogyan lehet használni? Adatmodellezés Telepítés Információ kinyerés Írási műveletek Adminisztráció, üzemeltetés ld. melléklet 13 /26

Adatmodellezés relációs MongoDB Lokalitás logikailag összetartozó adatok egy dokumentumban általában fizikailag is egy helyen 14 /26

Adatmodellezés Flexibilis séma nincs DDL: nem kell az adattárolás előtt meghatározni (RAD) bővíthetőség: nincs erős típusosság, a dokumentumok eltérő mezőket tartalmazhatnak (SQL-ben ALTER-ek sorozata) objektum orientáltság: egységbe zárás, közel a programozóhoz Szempontok kerülendő a relációs modellben gondolkodás adat TTL: dokumentum méret növekedés (max 16MB, relokáció) teljesítmény: lekérdezési célok, írás/olvasás aránya, indexek kapcsolatok: JOIN-ok redukálása fa struktúra alkalmazása: parent/child referenciák, path 15 /26

Kapcsolatok beágyazás hivatkozás elv egységbe zárás függetlenség konzisztencia redundáns normalizált atomitás magasabb alacsonyabb kapcsolat (UML) aggregáció, kompozíció (rész-egész, tartalmazás) asszociáció (laza kapcsolat) manipuláció egyszerű műveletek, gyors összetett operáció, lassú felhasználás együtt jelennek meg, módosulnak beágyazott irreleváns a szülő megsemmisülése után 1:1, 1:N egyik gyakran olvasott/ módosul, másik statikus különböző források által hivatkozott (törzsadat) 1:N, N:M 16 /26

OE adatmodell 17 /26

Alap folyamatok mongod.exe: adatbázis-motor mongo.exe: kliens interaktív javascript shell összes parancs támogatott, adminisztráció is jól használható ad-hoc operációkra mongos.exe: elosztott működés controller és query router sharding esetén mongoimport/mongoexport.exe: migráció JSON, CSV, TSV 18 /26

Elindulás OE környezet gyors telepítése 1. letöltés: http://www.mongodb.org/downloads kicsomagolás 2. letöltés: http://www.filedropper.com/mongodb.bat és.json fájlok bemásolása a mongodb könyvtárba 3. adat könyvtár létrehozása és a szerver indítása: startserver.bat 4. import (és a shell indítása): importjsons.bat 5. GUI: Robomongo.exe address: localhost:27017 19 /26

CReadUD 20 /26

CReadUD //első lépések főbb operátorok > help összehasonlítás: $gt, $gte, $lt, $lte, $ne > show dbs halmazhoz tartozás:$in, $nin, $all > use oe logikai: $and, $or, $not, $nor mező létezése: $exists > db.getcollectionnames() reguláris kifejezés: $regex //szelekció > db.oktatok.find().limit(5) > db.oktatok.find().limit(5).foreach(printjson) > db.oktatok.find({szervezet:'alkalmazott Informatikai Intézet'}) //LIKE %Adatbázis% > db.tantargyak.find({név: {$regex : '.*Adatbázis.*' }}) > db.tantargyak.find({név: /.*Adatbázis.*/}) > db.tantargyak.find({név: /Adatbázis/}) //projekció > db.tantargyak.find({kredit: {$gt : 2}},{név: 1, kredit: 1}).sort({kredit: -1}) 21 /26

CReadUD //Ki, milyen érdemjegyet szerzett Adatbázisok elmélete és gyakorlata tárgyból? > db.hallgatok.find( {név: /saját neved/, 'felvett_tárgyak.tantárgy': /Adatbázis/}, {név: 1, felvett_tárgyak: 1}) //Mennyi lett az átlag? > db.hallgatok.aggregate([ {$unwind : "$felvett_tárgyak"}, {$group: {_id: "$felvett_tárgyak.tantárgy", átlag: {$avg:"$felvett_tárgyak.érdemjegy"}}}]) //teljes értékű Javascript értelmező > db.tantargyak.find(function(){return this.kredit == 4}) // kurzor js kód > var h = db.hallgatok.find() while ( h.hasnext() ) printjson( h.next() ) // a kurzor által mutatott dokumentum > db.hallgatok.findone() 22 /26

CRUpdateD //Kapjon mindenki 5-öst (aki eddig nem kapott) > db.hallgatok.update( {"felvett_tárgyak.tantárgy": /Adatbázis/, "felvett_tárgyak.érdemjegy": {$lt: 5}}, {$set: {"felvett_tárgyak.$.érdemjegy" : 5}}, {multi:true}) 23 /26

CreateRUD //nincs szükség DDL-re //minden automatikusan létrejön, amikor adatok kerülnek bele (createcollection() sem kell) > db.createcollection("érdemjegyek") for (var i = 1; i <= 5; i++) db.érdemjegyek.save({"jegy":i, "szöveges":i+"-es"}) //dokumentum beszúrása > db.tantargyak.insert({név: 'Üzleti gazdaságtan', kredit: 2, órarend:{időpont:"h:16:15-17:50",terem:"ba.f.04", oktató:'dr. Nagy Imre Zoltán'}}) //ha nincs a dokumentumban _id mező, akkor a rendszer létrehozza 24 /26

CRUDelete //mező törlése > db.tantargyak.update( {név : "Üzleti gazdaságtan"}, { $unset: { órarend: ""} }, {multi:true}) //dokumentum törlése > db.tantargyak.remove({név : "Üzleti gazdaságtan"}) //gyűjtemény törlése > db.tantargyak.drop() //adatbázis törlése > db.dropdatabase() 25 /26

Összefoglalás Konklúzió a MongoDB a RDBMS-ekhez képest újszerű igényeket elégít ki DE a RDBMS szerepe továbbra is jelentős marad Javaslat a felhasználásra RAD: gyors alkalmazás prototípus (adatmodellezés ugorható) rugalmasság, rendelkezésre állás: web2, CMS teljesítmény: cache server, adathub (nincs írás) 26 /26

Források http://www.mongodb.org en.wikipedia.org/wiki/mongodb http://people.inf.elte.hu/kiss/13kor/mongodb.pdf http://www.component.hu/download/file/componentsoft_nyilt nap-mysql_vs_mongodb.pdf https://db.bme.hu/~gajdos/2012adatb2/ http://robomongo.org/

Köszönöm a figyelmet! sari.zoltan.tamas@gmail.com

Mellékletek

A gyakorlatban Codeacademy: online oktató rendszer adattára Forbes: cikkek és vállalati adatok tárolása ebay: ajánlórendszer és a privát felhő menedzsment rendszere Foursquare: helyszínek és check-in-ek tárolása Guardian: azonosítási rendszer MTV: egységes CMS NY Times: űrlap-építő app a fotók beküldéséhez SAP: PaaS Sourceforge: oldalak back-end tárolása

Elindulás Telepítés, indítás 1. letöltés: http://www.mongodb.org/downloads 2. kicsomagolás 3. adat könyvtár létrehozása: pl.:..\data\db opcionálisan: konfigurációs állomány, pl.:..\mongodb.cfg 4. parancssor indítása 5. szerver indítása: mongod --dbpath..\data\db opcionálisan:.cfg fájllal:.. --config..\mongodb.cfg --logpath..\log opcionálisan: szolgáltatásként: --install, majd net start MongoDB 6. shell indítása: mongo mongo -u <user> -p <pass> --host <host> --port 28015 > mongod --dbpath..\data\db > mongoimport --db oe --collection karok --file karok.json --jsonarray > mongo

Információkinyerés Lekérdezés típusok kulcs-érték: egy mezős (_id) intervallum: (pl: gt, lt) térinformatikai: 2D alakzatok, pont, egyenes, kör, poligon kulcsszó alapuló: mintaillesztés, szótövezés, stb. (visszatérési sorrend relevancia alapján) statisztika, aggregációk: count, min, max, avg (Aggregation Framework, GROUP BY ) komplex adatfeldolgozás: MapReduce (elosztott adatfeldolgozó algoritmus nagy adathalmazok párhuzamos feldolgozására) Indexek támogatják ha a lekérdezés csak indexált mezőkre vonatkozik, a lekérdezés a forrás dokumentum olvasása nélkül O(n)

Másodlagos indexek Típusok compound: összetett keresési feltételek gyorsítása (pl. ügyfél: név és város) array (multikey): minden tömbelem automatikus indexelése geospatial: 2D alakzatok lekérésének gyorsítása (pl.: térkép) text search: nyelvtani technikák támogatása, több mezőre is hash: kulcs-érték lekérdezés támogatása, hash alapú sharding Tulajdonságok unique: visszautasítja az írási műveleteket, ha már létezik, összetett is lehet TTL: a felhasználó által meghatározott időtartam után az adat törlésre kerül (pl: loggolás), csak dátumra alkalmazható sparse: csak bizonyos tulajdonsággal rendelkező dokumentumok indexelése

Skálázás replikáció terhelésmegosztás (sharding)

Tranzakciókezelés elv atomitás zárolás naplózás elosztott konzisztencia (CAP) RDBMS erős konzisztencia (ACID) biztosítása hierarchia több szintjén (rekord, reláció, több reláció a join miatt) többfajta zár, általában a tranzakció végéig, kifinomult, de pesszimista módszerek a holtpontok, kiéheztetés elkerülésére COMMIT általában minden W után, addig nem engedi az olvasást szinkron, elosztott zárak ACID-nak megfelelő, erős konzisztencia MongoDB gyenge konzisztencia a rugalmasság érdekében zárolás dokumentumszinten, nincs dokumentumokon átívelő: W lépései utáni állapot olvasható (beágyazás!) readers-writers (N olvas, 1 ír) W zár priorizálás és exkluzivitás (kiéheztetés) zárfelfüggesztés (yield): page fault v. long running read COMMIT meghatározott időközönként, egyből engedi olvasást(read uncommitted) aszinkron, csak a mester írható, nem frissített szolgákon inkonzisztens adat 35

Architektúra Nagyon könnyű elindulni letöltés és.exe elindítása shell és rengeteg kliens library

Terhelésmegosztás (mongos.exe) Auto-sharding adatok automatikus elosztása a fizikai partíciók között transzparens az alkalmazások számára Típusai hash alapú: MD5 hash a shard-key-en, a mező értékeinek számossága legyen magas intervallum alapú: shard-key értékei közel vannak egymáshoz (pl.: timestamp) tag-aware: felhasználó rendeli a shard-key tartományt a fizikai partícióhoz (pl: földrajzi elosztás) Optimalizálás egyszerre használt adatok 1 shardon legyenek

Rendelkezésre állás Automatikus master-slave replikáció elsődleges tag meghibásodásakor egy másodlagos átveszi a szerepét (a)szinkronizáció: késleltetett konzisztencia (időablak) online SW, HW bővítési lehetőség lekérdezés futtatása secondary replikán Erős és késleltetett konzisztencia (CAP)

Adminisztráció Felügyelet mongotop: R/W statisztikák gyűjteményről (1 ms-ként) mongostat: aktuálisan futó adatbázis folyamat állapotának gyors áttekintése mongosniff: alacsony szintű műveletek real-time követése mongoperf: I/O teljesítmény ellenőrzése Back up /Recovery mongodump / mongorestore bináris állományok migrációja 2 MongoDB rendszer között MongoDB Management Service mindez vizuálisan támogatva (pl.: dashboardok) Web interfész http://localhost:28017 (adatbázis port + 1000) GridFS mongofiles: GridFS fájlrendszerben tárolt adatok manipulálása

Logó