Adatbázis-kezelő rendszerek alkalmazása MongoDB ... Tartalomjegyzék A feladat 3 Az elkészítés...
Transcript of Adatbázis-kezelő rendszerek alkalmazása MongoDB ... Tartalomjegyzék A feladat 3 Az elkészítés...
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:
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.