Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 8. Előadás:

Hasonló előadás


Az előadások a következő témára: "1 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 8. Előadás:"— Előadás másolata:

1 1 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 8. Előadás:

2 Alkalmazásvezérelt séma Legfontosabb MongoDB-ben, hogy a séma az alkalmazáshoz alkalmazkodjon. MongoDB jellemzői: Gazdag dokumentumok Beültetett, beépített, előre összekötött adatok Nincs külső JOIN Nincsenek megszorítások (FOREIGN KEY) Atomi operációk (1 dokumentumon belül) Nincs séma (de mégis jó, ha a dokumentumok hasonlítanak egymásra valamennyire) 2

3 QUIZ Melyik az egyedüli legfontosabb faktor, amely meghatározza a MongoDB séma készítését? o Kibővíthető legyen a séma o Ember által könnyen olvasható legyen o Az alkalmazáshoz alkalmazkodjon az adatminta o Harmadik normálformában legyen az adat 3

4 Normálformák és célok (poszt tábla) Poszt_idCimTestSzerzoszerzoEmail 1“Elvis lives”“Yes, he lives!”“Andrew”andrew@x.com 2“Mongolocks”“This v”“Richard”richard@x.com 3“Hello World!”“Hi”“Andrew”andrew@x.com 4 1.A módosítási anomáliák kiküszöbölése 2.Minimalizálni az újrakészítést, ha bővítést szeretnénk 3.Minden elérési minta egyértelmű legyen A legutolsó nem teljesül a MongoDB esetén, de nem is biztos hogy kell teljesüljön. Az elsőre ügyelünk, hogy ne forduljon elő.

5 { "_id" : ObjectId("50ab0f8bbcf1bfe2536dc40b"), "body":“this is a blog body", "permalink" : "HKMCDonfjpXsVwErqiCL", "author" : "machine", "title" : "Bill of Rights", "tags" : ["kayak”, "tenor”, "parentheses”], "comments" : [ { "author" : "Barbera Lippman", "body":“This is a comment body", "email" : "mNuFLnqy@hsdvzFfS.com" }, { "email" : "aSfjwKWy@UkVhYnSH.com", "body":“This is another comment body", "author" : "Mikaela Meidinger" } ], "date" : ISODate("2012-11-20T05:05:15.259Z„) } 5

6 QUIZ Második kollekció a users kollekció lesz: {_id:”Erlichson”,password:”ZZXXa789_”} Milyen adat-minta nincs rendesen támogatva a blog séma által. o Előhozni a legújabb blog bemenetet a blog honlaphoz o Előhozni minden információt, hogy meg lehessen jeleníteni egy blogot o Összeszedni az összes kommentet, amelyik egy személyhez tartozik o Megadni tag-ra a tartalomjegyzéket 6

7 Alternatív séma a bloghoz PosztokKommentektagek _id: Title:Post_id:Tag: Body:Author:Post_id: Author:Author_email: Date:Order: Body: 7 Mivel nincs semmiféle JOIN lehetőség a MongoDB-ben, manuálisan kell összeszedni az infót több helyről, hogy meg lehessen jeleníteni. Ha ugyanolyan struktúrát kaptunk, mint a relációs adatbázisban, akkor valahol, valami rossz.

8 Megszorítások nélküli élet A beépítés segít. PREJOIN QUIZ Mire vonatkozik az a mondás, hogy megszorítás nélküli élet: o Mindennap úhu élni, mintha az utolsó lenne o Elmondani mindent, amit akarunk, amikor akarjuk o Konzisztensként tartani az adatokat, még ha a MongoDB nem támogatja az idegen kulcsokat, akkor is o Golyóálló mellény elhagyása 8

9 Élet tranzakciók nélkül Tranzakció – ACID (Atomicity, Consistency, Isolation, Durability) Atomi operációk (MongoDB-ben) 1 dokumentumon elvégzett operációkat nem látja addig senki, amíg meg nem történt a módosítás 9 123 Újra strukturálniSzoftver imlementációval megoldani lockot Tolerálni az inkonszisztenciát

10 QUIZ – tranzakciók nélküli élet Mely utasítások működnek atomian egy dokumentumon belül? Pipázzuk ki mindeniket, amelyik talál.  Update  findAndModify  $addToSet (egy update-n belül)  $push egy update-n belül 10

11 1 az 1-hez reláció MongoDB-ben Alkalmazott: CVÉpület: földszintPáciens: beteglap Alkalmazott és cv kollekció. Alkalmazott kollekcióba beépíteni a CV kollekciót. CV kollekcióba beépíteni az alkalmazott kollekciót. Minden attól függ, hogyan kérdezzük le az adatokat, mi az elsődleges szempont. Lényeges az elérési frekvencia. Ha a CV-t keveset használjuk, lehet, hogy érdemes külön kollekcióba tenni, hogy ne hozzuk be minden alkalommal a memóriába a CV-t is, amikor az alkalmazott adatokkal dolgozunk. Másik lényeges dolog az adat kiterjedése. Adatok atomicitása 11

12 QUIZ: 1 az 1-hez relációk Mikor ésszerű két dokumentumot, amelyik egy-az- egyhez kötődik egymáshoz különálló kollekciókban tartani?  Mert atomi módostást szeretnénk mindkét dokumentumon egyszerre  Hogy lecsökkentsük a működő részét az alkalmazásnak  Hogy külső kulcs megszorítást idézzünk elő  Ha az egyesített dokumentum mérete meghaladja a 16 MB-ot 12

13 1 a sokhoz (1:n) reláció város: személy People kollekció:{name:”Otto”, city:{name:”Csikszereda”,zip:153170}} Ilyen esetben igazi összekötés javasolt. 1 a kevéshez kapcsolat Blog posztok: kommentek Blog posztok: tagek 13

14 QUIZ - 1 a sokhoz (1:n) reláció Mikor ajánlott az egy a sokhoz relációkat több kollekcióban tartani? o Mindig o Amikor a sok, az tényleg sokat jelent o Amikor a sok az csak egy párat jelent o Soha 14

15 Sok a sokhoz reláció (n:m) Könyvek: szerzők hallgatók: tanárok Kevés a kevéshez esetben haszálhatjuk a beágyazást. Nagyon meg kell gondolnunk, minden az alkalmazástól függ és attól, hogy milyen kérdésekre kell választ adjon a rendszer, s azt milyen strukturánál tudjuk a legkönyebben megadni. Pl., ha a tanárokat beágyaztuk a hallgatók kollekcióba, egy új tanárnak a rendszerbe való bevétele probléma lehet 15

16 A beágyazás előnyei Javított olvasási teljesítmény Egy körút az adatbázishoz 1 ms, míg megtalálja az első bitet a lemezen, de utána folytonosan olvas, mert az adatok folytonosan következnek. 16

17 Fák Home: outdoors: winter: snow Gyökér: házon kívül: tél: hó Gyökér: Informatika: Adatbázisok: SQL könyvadat(konyv_id, cim, szerzo) targyszo(_id,megnevezes,szulo_id) konyvtargyszo(konyv_id,targyszo_id) MongoDB-ben vagy a szülők vagy a leszármazottak listáját kell nyilvántartani. 17

18 QUIZ – fák Adott a következő e-kereskedelmi tipikus kategória-hierarchia kollekció, melynek neve categories { _id: 34, name : "Snorkeling", parent_id: 12, ancestors: [12, 35, 90] } Mely kérdés találja meg a snorkeling kategória összes leszármazottját: o db.categories.find({ancestors:{'$in':[12,35,90]}}) o db.categories.find({parent_id: 34}) o db.categories.find({_id:{'$in':[12,35,90]}}) o db.categories.find({ancestors:34}) 18

19 Mikor denormalizáljunk? 1:1 esetben Ágyazzuk be 1:N esetben Ágyazzuk be az 1-be a sokat N:M esetben (sok a sokhoz) kössük össze azonosítókkal 19

20 Blob-ok kezelése Nagy állományok kezelése Blob (Binary large object) GRIDFS(16MB) Darabokban (chunks) tároljuk. 20


Letölteni ppt "1 Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 8. Előadás:"

Hasonló előadás


Google Hirdetések