Adatbázis-kezelő rendszerek alkalmazása MongoDB ... Tartalomjegyzék A feladat 3 Az elkészítés...

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

Transcript of Adatbázis-kezelő rendszerek alkalmazása MongoDB ... Tartalomjegyzék A feladat 3 Az elkészítés...

Adatbázis-kezelőrendszerekalkalmazása

MongoDBbeadandófeladat

Programtervezőinformatikusszak

2016.

2

Tartalomjegyzék

Afeladat......................................................................................................3

Azelkészítésmenete...................................................................................3

Leadásihatáridő..........................................................................................3

Honoráció,érdemjegy.................................................................................3

Elérhetőség,egyébinformációk..................................................................4

Ajánlottirodalom........................................................................................4

Aszoftverletöltése.....................................................................................4

Ajánlás.........................................................................................................4

Kötelezőtechnológia...................................................................................5

Alkalmazhatóésszabadonválaszthatótechnológiák.................................5

Ajánlottmegoldásimenet...........................................................................5

Afeladatrészletesen...................................................................................6

Tárolandóinformációk............................................................................6

Arendszeráttekintése............................................................................7

Replicaset...............................................................................................8

1. ReplicaSetafelhasználóiadatoktárolására(shard-ok)..............9

2. ReplicasetaConfigszervereklétrehozásához..........................10

Shardedcluster.....................................................................................10

Collectionfeltöltésetesztadatokkal.....................................................11

Fejlesztőidokumentációelkészítése.........................................................12

Legvégsőteendők.....................................................................................13

3

Afeladat

A feladat egy olyan MongoDB cluster létrehozása, teszt adatokkalfeltöltése, üzemeltetése, fejlesztői dokumentációjának elkészítése ésbemutatása, amely magában ötvözi az adatok többszörös tárolásának(Replicaset)ésavertikálisskálázásnak(sharding)azalkalmazását.

Azelkészítésmenete

FIGYELEM! Mivel a beadandó feladat mélyebb szintű MongoDBismereteketigényel,ebbőlkifolyólagafeladatotNEMkötelezőelkészíteni.A feladat kiírása abból a célból történt, hogy aki szeretne megajánlottjegyet szerezni a MongoDB témakörből, avagy szeretné megmutatniszakmairátermettségétazadatbázistémakörből,azlehetőségetkapjonrá.

Abeadandómunkátcsoportokbanlehetségesmegoldani,amelycsoportokcsakis1vagy2 fősek lehetnek. 2 fős csapatok esetén célszerű az egyescsapattagok együttes kooperálása a feladat elvégzése végett, hiszen kéthatalmasfunkciót(ReplicasetésSharding)írleabeadandótémaköre.

Leadásihatáridő

Abeadandóleadásihatáridejea11.hétvége,április24.vasárnap,24:00.

Azelkészültmegoldásokatösszetömörítve(.zip,.rar,.tar.gz)akariMoodlerendszerbekellfeltölteniatárgyhozkurzusához:

http://oktatas.mik.uni-pannon.hu/

Honoráció,érdemjegy

A beadandó leadásával leggyorsabban végző első 3 csapat összes tagjamegajánlott 5-ös nagyZH érdemjegyet kap, így a MongoDB-s nagyZHdolgozatmegírásaalólőkfelmentésrekerülnek.

4

Elérhetőség,egyébinformációk

Habármelyhallgatónakkérdésemerülfel,azalábbie-mailcímenérhetielazelőadót:

[email protected]

MongoDB-vel kapcsolatos egyéb információk a következő weboldalonérhetőekel:

http://desoft.hu/oktatas/mongodb/tartalom

Ajánlottirodalom

AMongoDBfelhasználóikézikönyve:

https://docs.mongodb.org/manual/

Aszoftverletöltése

AMongoDBazalábbiweboldalróltölthetőle:

https://www.mongodb.org/downloads#production

Ajánlás

A beadandó elkészítéséhez a hallgatóknak feltétlenül szükséges a JSON(JavaScript Object Notation) objektumok jelölésének elsajátítása ésmegértése. A MongoDB JSON objektumokkal kooperál és működik, alekérdezőésmanipulálónyelveisaJSONobjektumokjelöléséthasználja,az adatok tárolását ennek a bináris alakja, a BSON valósítja meg. AMongoDB dokumentációban, illetve az egyes kiadandó parancsokban isJSONobjektumokfordulnakelő.AfeladatelkészítéséhezaJavaScriptnyelvismerete nem szükséges, a dokumentációban minden egyes példakódértelemszerűenésmagátólértetődőenlettleírva.

5

Kötelezőtechnológia

KötelezőaMongoDB3.2-esproductionverziójáthasználni.

Alkalmazhatóésszabadonválaszthatótechnológiák

Aclusterbármelyoperációsrendszeren(Windows,Macintosh,Linux,stb.)bármilyen technológiával (pl. virtualizáció [VMware, VirtualBox, stb.],konténerek [Docker, Vagrant, stb.]) elkészíthető és bemutatható.Lehetségesakárelosztottmódon (pl. virtuálisgépeken,konténerekben),akáregyetlenegyoperációsrendszeren,esetlegegytávoli(dedikáltvagyVPS)szerveren,netánüberfunmódonegycloud-banlétrehozniacluster-t.

Ajánlottmegoldásimenet

1. MongoDB-skézikönyváttekintése2. Replica set és Sharding példa cluster-ek kialakítása megismerés

gyanánt3. Beadandófeladatcluster-énekelkészítése,beüzemelése4. Fejlesztőidokumentációmegírása5. Előadásdiasoránakelkészítése

6

Afeladatrészletesen

Abeadandófeladatcéljaegyolyanclusterelkészítése,amelyazadatokattöbbszörösenéselosztvatárolja.EbbőlkifolyólagahallgatóknakaReplicasetésShardingMongoDB-stémakörökbenszükségeselmerülniük.

AReplicasetszolgálazadatredundancia,amagasrendelkezésreállásésazautomatikusfailovereffektusbiztosítására.Segítségévelbiztonságosan,szerverleállásnélkülüzemeltethetőekMongoDBadatbázis-rendszerek.

A Sharding az adatok több szerveren történő elosztását és vertikálisskálázását teszi lehetővé. Használatával könnyedén lehet igazodni azadatbázisok egyre növekvő és hatalmas méretéhez, dinamikusbővítéséhez.

Azemlítettkéttechnológiátszükségesötvözniegyclusterlétrehozásához,amelyadatoktárolásátéslekérdezésétvalósítjameg.

A hallgatók feladata az említett technológiák irodalmazásának ésműködésének áttekintése, majd ezt követően egy összetett rendszerelkészítése. Ajánlott a rendszer elkészítése előtt az egyes technológiákegyenkénti tesztelése – demózása – a működésük megismerése ésmegértésevégett.

Tárolandóinformációk

Az adatbázis cluster-ben felhasználókról szükséges adatokat tárolnia. Afelhasználókakövetkezőattribútumokkalrendelkeznek:név(name),kor(age)ésnem(sex).

Az alábbi példa JSON felépítésével megegyező dokumentumok tárolásaszükséges:

{

"name" : "Péter"

, "age" : 20

, "sex" : "male"

7

}

Azegyes felhasználók adatait ausersnevezetű collection-ben szükségesmajdeltárolni,amelyaclusternevűadatbázisbanlegyenelhelyezve.

Azegyespéldafelhasználókadataitahallgatóknakszükségeskitalálniukésfelvinniükacluster-be.

Arendszeráttekintése

A cluster alapvetően a Sharding technológiára épül (sharded cluster),azonbanegyeselemeiReplicaset-tellegyenekmegvalósítva.

AShardingmegvalósításához3-féletagtípusraleszszükség:

• egyrouterszerverre(mongos)• konfigurációsszerver(ek)re(Configszerverek)• adatokténylegestárolásátmegvalósítószerverekre(Shard-ok)

AkliensprogramokésamongoCLIarouter-enkeresztültudnaklekérdezniés manipulálni adatokat, ebből kifolyólag minden esetben hozzá kellkapcsolódniuk,nematöbbi(Configvagyadattárolóshard)szerverhez.Akonfigurációsszerver(ek)feladataaz,hogyarouterszámárabiztosítsákameta adatokat, amelyek alapján az a szükséges adattároló szerverekheztud kéréseket intézni, azaz le tudja futtatni a kívánt műveleteket. Atényleges adatokat tároló adattároló shard szerverek tartományokraosztvatároljákazadatokat.Ezekatartományokafelhasználókkoraalapján3,egymástólteljesenelkülönültszerverenhelyezkednekmajdel:azelsőshardszerverenaz1-20évesek,amásodikshardszerverena20-50évesek,míg a harmadik shard szerveren az 50-100 éves felhasználók lesznektárolva.Eztazelosztástmajdahallgatóknakkellbeállítaniukkézzel,miutánfeltöltöttékatesztadatokatamegfelelőcollection-be.

Az imént említett cluster architektúra egy szimpla sharding cluster-nekfelel meg, amelyet még a bővíteni kell magas rendelkezésre állástulajdonsággal is. Ily módon Replica set-eket kell beépíteni az egyesszerverekhelyére.Jelenbeadandófeladatarouterszámáranemkövetelmeg magas rendelkezésre állást, ezért az csak egy sima standaloneszerverként kell, hogy fusson. A Config és shard szervereket viszont

8

szükségesellátniahighavailabilitytulajdonsággal, ígyezeknemszimplastandalone szerverek lesznek, hanem egy-egy Replica set-ek. A Configszerverek3tagbólállóReplicaset-etkell,hogyképezzenek.Acluster-ben3darabshardszerverhelyett3darabReplicaset-etkelllétrehozni,amelyset-eklesznekrendrea3darabshardszerverekteljesmegfelelői.Ezcsakannyiban különbözik a standalone megvalósítástól, hogy nem egy-egyszerverenlesznekazadatok,hanemtöbbszerverenredundánsantárolva.Az említett Config és shard Replica set-ek ismertetése a következőalfejezetbentörténik.

Figure1Ateljes,elkészítendőcluster

Replicaset

Afelhasználókadatainaktárolásatöbbszörösmeglétükkelvalósuljonmeg.EhhezReplica set-ekre lesz szükség,amelyekmagas rendelkezésreállástbiztosítvaműködnek.

Kétféle Replica set-re lesz szükség: a Config szerverek létrehozásáhozegyre, illetve a felhasználók (azaz tényleges adatok) tárolásához 3-ra –utóbbiakkonkrétanazegyesshard„szerverek” lesznekReplicaset-ekkelmegvalósítva.

9

1. ReplicaSetafelhasználóiadatoktárolására(shard-ok)A felhasználókadatait shard-ok tárolják több szerveren történőelosztásvégett.A shard-ok valójábanReplica set-ek, amelyek5 tagból kell, hogyálljanak:

• 1elsődleges(primary)tag• 2másodlagos(secondary)tag• 1rejtett(hiddensecondary)tag• 1arbitertag

Mindaz5tagszavazatijoga1legyen.Aprioritásukarejtettésazarbitertagonkívülazösszesnek1kell,hogylegyen.Azelsődlegesésmásodlagostagokgondoskodnakalekérdezésekésmanipulációkfuttatásáról,mígazarbiter tag csak a szavazáson, azaz új elsődleges választása esetén,tevékenykedik. A rejtett tag feladata az adatok biztonsági másolatának(backup)tárolása,ésaszavazásonvalórészvétel1-esszavazatijoggal.

Figure2EgyShard„szerver”-egyteljesReplicaSet

10

2. ReplicasetaConfigszervereklétrehozásáhozAConfig szerverek feladataametaadatok tárolásaaclusterszámára.AConfigszerverekszámáraisegyReplicaset-etszükségeslétrehozni,amelybiztosítjaamagasrendelkezésreállásukat.EzenReplicaset3tagbólkell,hogyálljon:

• 1elsődleges(primary)tag• 2másodlagos(secondary)tag

Azegyestagokszavazatijogaésprioritásaazalapértelmezett1legyen.

Figure3AConfigszerverekReplicaSet-e

Shardedcluster

Aclusteralapjátavagyösszetételétashardingfogjaadni.Arendszertúgykell elképzelni, hogy az adatok elosztva legyenek tárolva különbözőszerverekenúgy,hogyakorukszerintcsoportosítvavannakelhelyezve.

Aművelethezamáremlítettrouterszerverre,aConfigReplicaset-reésashardszerverekreleszszükség.Arouter-hezkapcsolódikazösszeskliens,aki a kéréseket vezérli, aConfig Replica set feladat pedig ameta fájlokbiztosítása, hogy a router általuk a megfelelő shard szerverekhezcsatlakozzon, s rajtuk hajtsa végre az adatbázis műveleteket. A shardszerverek az adatokat tárolják. Egy collection dokumentumai adott

11

indexelt kulcs értékei szerint bonthatóak tartományokra, s ezeket akialakított tartományokat chunk-naknevezik. A hallgatók feladata lesz achunk-ok kialakítása, hogy a megfelelő rendben legyenek a felvettdokumentumokeltárolvaazegyesshardszervereken.Ashardszerverekazalábbi ábrán egyszerűsítve vannak standalone szerverként, azonban abeadandómegoldásábanegy-egyReplicasetkell,hogylegyenek:

Figure4Azegyszerűsítettshardedcluster

Collectionfeltöltésetesztadatokkal

Miutánahallgatók létrehoztákazelőírtcluster-t, felkellvennianéhányadatokat ahhoz, hogy tesztelni lehessen a Sharding helyes működését.Ehhez először egy cluster nevezetű adatbázist kell létrehozni, amelyenengedélyeznikellutánaasharding-ot.Eztkövetőenebbenazadatbázisbanegyusersnevűcollection-tkelllétrehozni,sazonengedélyezniasharding-otazelőírtageattribútumszerint.Hamindezmegtörtént,következhetateszt adatok felvétele a users collection-be. Amint az már korábbialfejezetbenlelettírva,mindenegyesdokumentumnakrendelkezniekellanév,korésnemkulcsokkalésértékeikkel.

12

Fejlesztőidokumentációelkészítése

Aclusterbeüzemeléseésatesztadatokfeltöltéseutánkövetkezikazutolsófeladata a hallgatóknak: a fejlesztői dokumentáció elkészítése. AdokumentációnakegyolyanPDFfájlnakkelllennie,amelybenszerepelnekazalábbiinformációk:

• a fő oldalon: a beadandó címe, a beadandót elkészítő hallgatóknevei,Neptun-kódjai,dátum

• 2.oldal:üres• 3.oldalon:jónéhánymondatbanismertessékacsapattagjai,hogy

miért is vállalkoztak a beadandó feladat elvégzésére (pl.: engemnagyon érdekelnek az adatbázisok skálázhatóságai, érdekel aMongoDB,szeretemakihívásokat,stb.)

• 4. oldalon: fő fejezetként ismertessék fél-1-2 oldalon, hogymit isjelent a Sharding és a Replica Set (a célja ennek, hogy mennyiresikerült megérteniük a csapat tagjainak az egyes feature-ökműködését)

• ezt követően: fő fejezetként új oldalon ismertessék, hogy milyenoperációs rendszeren valósították meg a cluster-t, milyentechnológiákathasználtak,smiértválasztottákazokat

• majd:főfejezetkéntújoldalonlépésrőllépésreírjákle,hogymilyenparancsokat adtak ki a cluster összeállításának kezdetétől avégezetéig,majdröviden írják is le,hogymelyikparancsmitcsinál(néhány szóval vagy mondattal). Ugyanezt szükséges megtenni atesztadatokfelvételével,tesztelésével,chunkmigrációvalésegyébadatbázisműveletekellenőrzésévelis(pl.:hogyanellenőrizték,hogyjelen pillanatban dolgozik-e a balancer? [melyik parancs], hogyannéztékmeg,hogymelyikchunkmelyikshard-on található?,melyikparanccsalállítottákbeasharding-otazadatbázison,smelyikkelacollection-ön?,stb.)

• ezután:főfejezetkéntújoldalonismertessék,hogymilyenhibákbafutottakbeleaclusteregészénekvagyannakegyrészénekbeállítása,beüzemeléseközben(pl.:nemtudtukbeállítaniasharding-otadottcollection-reazért,mertelfelejtettükindexelniazadottmezőt,stb.)

13

• végezetül: fő fejezetként új oldalon konklúzióként írják le, hogyhogyan élték meg a cluster felállítását, beüzemelését; milyenérzéseketváltottkiÖnökbenaMongoDBafeladatmegoldásasorán;milyen benyomást keltett Önökben az adatbázis-kezelő rendszerhasználata, megismerése, tulajdonságai, használhatósága,egyértelműsége; mennyire sikerült megkedvelni avagy nemmegkedvelniaMongoDB-t;mennyiretartjákjóDBMS-nekazSQL-estársaimellett,sezekhezhasonlódolgok...

Legvégsőteendők...

A hallgatóknak legvégül a fejlesztői dokumentációt és a MongoDBszerverek számára létrehozott konfigurációs fájlokat össze kellcsomagolniuk egy [.zip, .rar, .tar.gz] kiterjesztésű fájlba, s a tömörítettállománytfelkelltölteniükaMoodlerendszerbe.