MongoDB, NoSQL Database Management System
MongoDB, NoSQL Database Management System
PUNIM SEMINARI
MENTOR: Prgatiti:
PnD.c Zirije HASANI Arsim GJINOVCI
Dhjetor 2016
Prmbajtja
Prmbajtja ....................................................................................................................................... 2
Abstrakti .......................................................................................................................................... 4
1. Hyrje ........................................................................................................................................... 5
2. NoSQL data bazat ....................................................................................................................... 6
3. ka jan NoSQL data bazat ........................................................................................................ 6
3.1 Tipat e data bazave NoSQL .................................................................................................. 7
4. T dhnat e pa strukturuara dhe gjysm t strukturuara ............................................................. 7
4.1 T dhnat e strukturuara ........................................................................................................ 7
4.1.1 Karakteristikat e t dhnave t strukturuara ................................................................... 7
4.2 T dhnat e pa strukturuara dhe gjysm t strukturuara........................................................ 8
5. NoSQL krahasuar me RDBMS ................................................................................................... 9
5.1 Disa nga shprehjet n MongoDB si pjes e NoSQL data bazave ....................................... 11
5.1.1 Data baza ...................................................................................................................... 11
5.1.2 Koleksioni ..................................................................................................................... 11
5.3.3 Dokumenti .................................................................................................................... 11
5.3.4 Skemat dinamike .......................................................................................................... 11
5.3.5 Emrtimi ....................................................................................................................... 12
6. Arsyeja e prdorimit t NoSQL ................................................................................................ 12
7. MongoDB .................................................................................................................................. 14
7.1 ka sht MongoDB............................................................................................................ 14
7.2 Instalimi i MongoDB ........................................................................................................... 15
7.2.1 Instalimi i MongoDB n Windows .............................................................................. 15
7.3 Si ruhen t dhnat n MongoDB ....................................................................................... 16
7.3.1 Numri unik _id.............................................................................................................. 18
7.3.2 Data tipat e MongoDB .................................................................................................. 18
7.4 Demonstrimi praktik si punon MongoDB ........................................................................... 19
2
7.4.1 Krijimi dhe insertimi n data baz MongoDB .................................................................. 20
7.4.2 MongoDB kushtzimet e pyetsorve q jan ekuivalente me ato t RDBMS ............. 23
8. Aspekte t avancuara ................................................................................................................ 24
8.1 Replikimi i data bazave n MongoDB ................................................................................. 24
8.1.1 Pse nevojitet replikimi i bazs s t dhnave ................................................................ 24
8.1.2 Si funksionon puna e replikimit n MongoDB ............................................................. 24
8.1.3 Veorit e replika setit [9] ............................................................................................ 25
8.1.4 Si bhet setapimi i repliks ........................................................................................... 25
8.1.5 Shtimi i antarit n setin e repliks ............................................................................... 26
8.2 MongoDB - shardingu......................................................................................................... 26
8.2.1 Pse nevojitet shardingu? ............................................................................................... 27
8.2.2. Sharding n.................................................................................................................... 27
8.3 Prdorimi i MongoDB me PHP dhe web aplikacion .......................................................... 28
8.3.1 Lidhja me MongoDB data bazn dhe selektimi i saj .................................................... 29
8.3.2 Krijimi i nj koleksioni n MongoDB me PHP ............................................................ 30
8.3.3 Insertimi i dokumentit .................................................................................................. 31
8.3.4 Gjetja e gjitha dokumenteve me php, n MongoDB..................................................... 31
8.3.5 Aktualizimi i dokumentit n mongo prmes php-s ..................................................... 32
8.4.5 Fshirja e dokumentit n MongoDB koleksion me kod nga php ................................... 32
8.5 Koleksionet e mbuluara ....................................................................................................... 33
8.5.1 Krijimi i koleksioneve t mbuluara .............................................................................. 34
9. Konkluzion................................................................................................................................ 35
Referenca ...................................................................................................................................... 36
Lista e figurave ............................................................................................................................. 37
Lista e tabelave ............................................................................................................................. 37
3
Abstrakti
Zhvillimi i Internetit dhe shprndarja e t dhnave n kt rrjet global, sidomos kto 15 vitet e
fundit, ka qen shum vshtir t parashikohet. Ky zhvillim ndikoi jashtzakonisht shum n
zhvillimin e data bazave dhe nxiti sfida t ndryshme, q ndonjher ishin vshtir t tejkaluara dhe
vshtir menaxhoheshin me teknologjit ekzistuese t bazave t t dhnave.
Zhvilluesit e data bazave t shum kompanive, pr nj koh ishin t rehatuar me server individual
ku ishin t instaluar sistemet RDBMS, sikurse MySQl, SQL etj. Me shtimin e shumt t t dhnave
n rrjet, u paraqit nevoja pr coptimin e t dhnave npr nyje tjera. Kshtu u paraqitet nevoja
pr shtimin e serverve shtes, e kjo do t thoshte se nevojiteshin edhe harduer shtes. E gjitha kjo
e komplikoi punn, ngase krahas harduerit nevojitej edhe zhvillimi i aplikacioneve t reja q mund
do t mund ti menaxhojn dhe ribashkojn lidhjet e t dhnave t coptuara n disa nyje. N
tentim pr ta zgjidhur kt, duhej respektuar n mnyr strikte skemat e modeluara pr data bazat.
Kjo ishte vshtirsi shtes. Gjitha kto vshtirsi ndikuan n zhvillimin e data bazave q do t
kishin m shum fleksibilitet, dhe jo vetm me gjuh t strukturuar, pra filloi zhvillimi i NoSQL
data bazave. Nj nga ato data baza t fuqishme, e bazuar n dokument sht MongoDB,
funksionimin e t cilit do ta prshkruaj n kt punim.
1. Hyrje
Data bazat n prgjithsi jan t kategorizuar n tre grupe t mdha: RDBMS (data bazat
relacionale), OLAP (data bazat pr procese analitike online) dhe NoSQL (data bazat jo vetm
SQL).
Tem e ktij punimi jan NoSQL data bazat, gjegjsisht MongoDB, q sht nj nga prfaqsuesit
e ktij grupi t data bazave e bazuar n dokument, me kod t hapur.
Problemet kryesore q nj NoSQL synon t i zgjidh, zakonisht kan t bjn me shtjet e shkalls
(scale). N astin kur t dhnat nuk prshtaten n nj server t vetm MySQL, ose kur nj pajisje
e vetme nuk mund t trajtoj m ngarkesn e pyetsorve (query), shfaqet nevoja e prdorimit t
disa strategjive pr copzim (sharding) dhe replikimin (replication).
N kt punim kam tentuar ti prshkruaj prve tjerash edhe disa aspekte m t avancuara t
MongoDB sistemit t menaxhimit t data bazave, sikurse: instalimet dhe konfigurimet e serverit
n sistemin operativ Windows dhe konfigurimet e nevojshme, nisja e aplikacioneve klient dhe
krijimi, i data bazave, koleksioneve, dokumenteve, gjetja e tyre.
Si pjes e tentimit pr ti prshkruar aspektet e avancuara t MongoDB, sht edhe prshkrimi dhe
metoda e krijimit t koleksioneve t mbuluara (capped colections).
5
2. NoSQL data bazat
NoSQL bazat e t dhnave si: MongoDB, Cassandra, HBase, Voldemort dhe t tjera, u projektuar
nga fillimi q t mund t jen t shprndar dhe pr t trajtuar vllime t mdha t t dhnave.
Kto NoSQL baza ofrojn nj kombinim t punve, m t dobishm se q nj MySQL ose postgres
mund t ofroj.
NoSQL data bazat prfshijn do baz t dhnave, q nuk sht relacionale sikurse sistemi
tradicional i menaxhimit t bazs s t dhnave (RDBMS). Motivimi prapa zhvillimit t NoSQL
data bazave sht kryesisht te projektimi i thjeshtuar, shkalla horizontale, dhe kontrolli m i mir
mbi disponueshmrin e t dhnave.
NoSQL tenton t shkputet nga struktura tradicionale e bazave t t dhnave relacionale. Po ashtu
tenton q t i mundsoj zhvilluesit e aplikacioneve q t zbatojn modelet t cilat n mnyr m
t prshtatshme u prgjigjen nevojave t rrjedhs s t dhnave n sistemet e tyre.
Kjo do t thot se bazat e t dhnave NoSQL mund t zbatohen n mnyra q nuk do t mund t
strukturoheshin data bazat tradicionale relacionale. [2]
6
3.1 Tipat e data bazave NoSQL
T dhnat e strukturuara jan gjitha t dhnat, q qndrojn n fush fikse brenda fajllit apo
shnimit. T dhnat e tilla i hasim te data bazat relacionale dhe dokumentet me flet t shprndar
(spreadsheet)1.
T dhnat e strukturuara, s pari varen nga krijimi i nj modeli i t dhnave, - nj model i llojeve
t dhnave t biznesit sipas t cilit do t regjistrohen dhe se si ato t dhna do t ruhen, prpunohen
dhe t qasen m von. Kjo prfshin prcaktimin se, n cilat nga fushat e t dhnave do t ruhen
dhe se si do t ruhen ato dhnat. Prcaktohet lloji i t dhnave (numr, para, alfabetik, emr, dat,
adres) dhe do kufizim lidhur me futjen e t dhnave (numri i karaktereve, i kufizuar n terma t
caktuara t tilla si z, znj apo Dr.; M ose F etj.). [4]
T dhnat e strukturuara kan eprsi ngase leht regjistrohen, ruhen, krkohen dhe analizohen. Nj
koh, pr shkak t mimit t lart dhe kufizimeve n performancn e disqeve, memories dhe
procesimit, te data bazat relacionale, prdorimi i t dhnave t strukturuara, ishte e vetmja mnyr
e menaxhimit efektiv. Dhe gjithka tjetr q nuk mund t vendosej n strukturn ngusht t
organizuar, duhej t vendosej n letr dhe t ruhej n orman. [4]
1Dokumentet spreadsheet i gjejm te programet: MS Excel, Libre Office, Google Sheets, Work numbers, OpenOffice, Lotus
Symphony etj. N kto dokumente t dhnat rruhen n rreshta dhe kolona.
7
4.2 T dhnat e pa strukturuara dhe gjysm t strukturuara
T dhnat e pa strukturuara jan t gjitha ato gjra q nuk mund t klasifikohen n mnyr t
gatshme, dhe t prshtaten n nj vend, si: fotot dhe imazhe grafike, video, webpages, PDF fajllat,
Power Point prezentimet, emailat, blogjet, dokumentet e prpunimit t tekstit etj. [4]
T dhnat gjysm t strukturuara jan nj njfar mnyre udhkryq mesa atyre t dhnave t pa
strukturuar dhe t strukturuar. Sidoqoft, t kto t dhna mungon nj struktur strikte n modelin
e t dhnave t tyre.
Te t dhnat gjysm t strukturuar, tagjet ose llojet e tjera t shnuesve (markert), prdoren pr
t identifikuar disa elemente brenda t dhnave, por se e dhna nuk ka nj struktur t ngurt
(rigid). Pr shembull, softueri pr prpunim t tekstit, mund t prfshijn meta data q tregojn
emrin e autorit dhe datn e krijuar, por me pjesn m t madhe t dokumentit, teksti mbetet i pa
strukturuar. [4]
E-mailat kan drguesin, marrsin, datn, kohn si dhe fushat tjera fikse t shtuara te t dhnat t
pa strukturuara t prmbajtjes s mesazhit dhe fajllave t bashkngjitura n e-mail. Fotografia ose
grafika t tjera mund t jen t etiketuar me fjal kye t tilla si: krijuesi, data, vendi dhe fjalt
kye, duke i br t mundur q t i organizojm dhe gjejm ato grafika.
XML dhe markup gjuht tjera prdoren shpesh pr t menaxhuar t dhnat e gjysm t
strukturuara.
8
5. NoSQL krahasuar me RDBMS
NoSQL sht nj kategori e bazave t t dhnave q dukshm ndryshon nga bazat e t dhnave
SQL. Tabela e m poshtme krahason dallimet kryesore n mes NoSQL dhe SQL.
NoSQL SQL
Modeli Jo relacional Relacional
Vendos t dhnat n JSON dokumente, ifte Vendos t dhnat n tabela
t elsave / vlerave, grafe
T dhnat - Ofron fleksibilitet, secilit shnim nuk duhet - I mrekullueshm pr rastet ku secili
medoemos ti vendosin t gjitha vetit e shnim ka veti t njjta.
njjta. - Shtimi i vetive t reja krkon ndryshim t
- Vetit e reja mund t shtohen aty pr aty skems ose ri plotsim t shnimeve
- E mir pr t dhnat gjysm t strukturuara, - E mir pr t dhnat e strukturuara.
t dhnat brenda t dhnave (n fole), t
dhnat komplekse.
Skema - Skema dinamike apo fleksible. - Skema strikte
- Data baza sht agnostike ndaj skems, - Skema duhet t mirmbahet dhe t mbahet
ndrsa skema sht diktuar nga aplikacioni. n sinkronizim mes aplikacionit dhe data
Kjo lejon zhvillim agil (t shkatht) dhe bazs.
iterativ (prsrits).
Transakcionet - Prkrah ACID2 transaksione dhe variron - Prkrah ACID transaksione.
sipas zgjidhjes
Konsistenca dhe - Konsistenca q prkrahet, sht varsisht - Zbatim i konsistencs s fort.
disponueshmria nga zgjidhja dhe mund t jet nga - Konsistenca ka prioritet mbi
konsistenca eventuale deri te ajo e fort. disponueshmrin dhe performancn.
- Konsistenca, disponueshmria dhe
performanca mund t trajtohen sipas
nevojave t aplikacionit. (CAP teorema 3).
Performanca - Performanca mund t rritet n maksimum - Performanca insert dhe update varet se sa
duke e ulur konsistencn, nse sht e shpejt kryhet t shkruarit, derisa konsistenca
nevojshme. e fort sht e imponuar.
- Gjitha informatat pr entitetin ndodhen n - Performanca mund t rritet duke
nj shnim (record), prandaj aktualizimi shkallzuar resurset e disponueshme dhe me
mund t bhet me nj veprim. prdorimin e in-memory strukturave.
Shkalla - Shkallzimi (scaling) zakonisht arrihet - Shkallzimi (scaling) zakonisht arrihet
horizontalisht me t dhna t coptuara vertikalisht, me m shum server resurse.
(particionuara) n disa server n hapsir
2 N shkenca kompjuterike, ACID (Atomicity, Consistency, Isolation, Durability) sht nj grup i vetive t transaksioneve t bazs
s t dhnave. N kontekstin e bazave t t dhnave, nj operacion i vetm logjik n nj t dhn quhet nj transaksion.
3 N shkenca kompjuterike teorike, teorema CAP, i quajtur edhe teorema e Brewersit, sipas shkenctarit Eric Brewer, thot se pr
nj sistem t shprndar kompjuterik sht e pamundur q t njjtn koh t siguroj t tre garancionet: Konsistencn,
Disponueshmrin dhe Performancn.
9
Krahasuar me data bazat relacionale RDBMS, ato NoSQL kan performans m t mir. Po ashtu prdorin
gjuh pr pyetje (query language), dhe kan shtrirje horizontale n rast se nevojiten pajisje t reja pr m
shum shnime apo t dhna. Ndrsa bazat e t dhnave RDBMS megjithat ofrojn funksionalitet mjaft
m t madh.
PERFORMANSA
NoSQL
RDBMS
FUNKSIONALITETI
RDBMS MongoDB
Tabela Koleksioni
Kolona Fusha
10
5.1 Disa nga shprehjet n MongoDB si pjes e NoSQL data bazave
Data baza sht nj mbajtse fizike pr koleksione. Secila data baz e ka setin e vet t fajllave n
sistemin e fajllave. Nj server i vetm i MongoDB zakonisht ka data baza t shumfishta.
MongoDB grupon koleksionet n data baza. Nj instanc e vetme e MongoDB mund t mbaj disa
baza t t dhnave, pr secilin grupim me zero ose m shum koleksione. [5]
5.1.2 Koleksioni
5.3.3 Dokumenti
Dokumenti sht nj set i ifteve t elsave vlerave. Dokumentet kan nj skem dinamike.
Skem dinamike do t thot kur dokumentet n koleksionin e njjt nuk duhet t ken domosdo
fusha t njjta apo struktur t njjt, dhe se fushat e prbashkta n koleksion t dokumenteve
mund t prmbajn tipa t ndryshme t t dhnave.
Koleksionet kan skema dinamike. Kjo nnkupton q dokumentet brenda nj koleksioni t vetm
mund t ken forma t ndryshme.
Pr shembull: q t dyja nga kto dokumente pasuese mund t vendosen n nj koleksion t vetm:
{"pershendetja" : "Tung!"}
{"foo" : 5}4
4
Termat foobar (/ fubr /), ose foo, "First Object Oriented" dhe "Binary Arbitrary Reason " jan prdorur si emra
vendmbajtse n programim apo dokumentacion lidhura me kompjuterin. Ktsaj i referohen po ashtu si ndryshore
metasyntaktike sikurse shkronjat q ndonjher i zvendsojn numrat n Algjebr)
11
5.3.5 Emrtimi
Koleksioni identifikohet sipas emrit t vet. Emrat e koleksionit mund t prmbajn do varg t
UTF-8 standardit, por me disa kufizime:
- Vargu i zbrazt ("") nuk sht emr valid i koleksionit.
- Emrat e koleksionit nuk bn t prmbajn karakterin null ( \0 ) ngase ky karakter prdoret pr
t prfunduar dokumentin.
- Asnj koleksion nuk duhet t filloj me prefiksin system. Ky prefiks sht i rezervuar pr
koleksione interne. P.sh. koleksioni system.users
do baz e t dhnave racional ka nj dizajn tipike t skems, q tregon numrin e tabelave dhe
relacionet n mes ktyre tabelave. Ndrsa n MongoDB, nuk ekziston koncepti i relacioneve. [7]
MongoDB sht data baz e bazuar n dokument n t ciln nj koleksion i mban dokumentet e
ndryshme. Numri i fushave, prmbajtjes dhe madhsis s dokumentit mund t ndryshojn nga nj
dokument n tjetrin.
Si shembull, pr ta par dallimin mes skems s dizajnimit t data bazave relacionale dhe
MongoDB, mund t supozojm se duhet t dizajnojm nj baz pr nj web faqe (website) apo
bllog (blog). Nj web faqe apo bllog i ka s paku kto krkesa:
Pra, si e shohim, pr kto shnime sipas skems s data bazave relacionale RDBMS,5 nevojiten
s paku tre tabela dhe lidhjet mes tyre.
5RDBMS sistem i menaxhimit t bazs s t dhnave (DBMS) q sht i bazuar n modelin relacional. RDBMS sht themeli pr
SQL, dhe pr t gjitha sistemet moderne t bazave t t dhnave si MS SQL Server, IBM DB2, Oracle, MySQL, dhe Microsoft
Access.
12
Figura 2. Lidhjet e tabelave te data baza relacionale
Ndrsa t MongoDB si NoSQL data baz, n vend se t krijojm tre tabela dhe lidhjet mes tyre,
krijohet vetm n nj koleksion.
{
_id: POST_ID
titulli: TITLE_OF_POST,
pershkrimi: POST_DESCRIPTION,
nga: POST_BY,
url: URL_OF_POST;
tagjet: [TAG1, TAG2, TAG3],
pelqimet: TOTAL_LIKES,
komentet: [
{
perdoruesi: COMMENT_BY,
message: TEXT,
dataKrijuar: DATE_TIME,
pelqime: LIKES,
},
{
perdoruesi: COMMENT_BY,
message: TEXT,
dataKrijuar: DATE_TIME,
pelqime: LIKES,
}
]
}
Figura 3: Nga figura shohim se n MongoDB, t dhnat shfaqen n nj koleksion t vetm, n vend se
n tre tabela si n rastin e bazave te RDBMS
13
7. MongoDB
N vitin 2007, kompania 10gen filloi punn n nj stek (stack)6 me kod t hapur pr prpunim t
t dhnave n hapsirn cloud. Ky ishte momenti i lindjes s MongoDB, si shtres e t dhnave
e platforms Cloud.
MongoDB sht dokument data baz me kod t hapur (open source) i popullarizuar n mesin e
zhvilluesve dhe profesionistve, pr shkak t qasjes s saj t shkatht dhe t shkallzuar.
Raste t shpeshta t prdorimit t MongoDB prfshijn t dhnat e mdha operative dhe analitike,
t menaxhimit dhe t ofrimit t prmbajtjes, infrastrukturs celulare dhe sociale, menaxhimit t t
dhnave t prdoruesve etj.
MongoDB sht shkruar n gjuhn programore C++ dhe zhvilluar n mnyr aktive nga kompania
10gen e cila n vitin 2013 e ndryshoi emrin n MongoDB Inc. [8]
MongoDB sht me kod t hapur dhe lejohet sipas kushteve t GNU-AGPL7 licencs. Kodi burimor
sht lirisht n dispozicion edhe n Github8. Projekti MongoDB udhhiqet nga ekipi i vet, por
shpesh pranohen edhe kontributet nga komuniteti n Internet. [7]
Projekti sht hartuar pr t gjitha sistemet operative t mdha, duke prfshir edhe Mac OS X,
Windows, dhe Linux.
Data bazat e orientuara n dokument mund t i quajm si nj pjes apo kategori e data bazave
NoSql.
6 N shkenca kompjuterike, steku paraqet nj pirg q sht nj lloj i t dhnave abstrakte q shrben si nj koleksion
i elementeve, me dy operacione kryesore: shtytje (push), e cila shton nj element n koleksion, dhe nxjerrje (pop), e
cila heq elementin e shtuar n fund dhe q nuk sht hequr ende.
7
Licenca GNU Affero General Public License sht licenc pr softuer dhe lloje t tjera t punve, e projektuar
posarisht pr t siguruar bashkpunimin me komunitetin sidomos te programet q prdoren n rrjet. Kjo licenc
sht e projektuar pr t dhn liri t plot prdoruesve pr t ndar si dhe pr t ndryshuar kodin burimor t softuerit
apo ndonj vepre tjetr.
8 Github sht nj shrbim i bazuar n web hostim, si vend depozitimi pr kode t aplikacioneve, dhe ofron
shprndarje dhe kontroll t versionit t kodit burimor t aplikacioneve, mes prdoruesve.
14
Ka fleksibilitet t madh dhe sht e shkallzuar pr qllime t prgjithshm, dhe at krahas
mundsive pr krijim (create), aktualizim (update), lexim (read) dhe fshirje (delete) t t dhnave,
po ashtu ofron nj numr t madh dhe gjithnj n rritje t veorive unike si: indeksim, agregim,
tipet speciale t koleksioneve etj.
- Indeksimi (indexing),
- Agregimi (aggregation)
MongoDB mund t instalohet n disa platforma, gjegjsisht sisteme operative si Windows, Linux,
OS X, Solaris.
9
Faqja www.mongodb.com/download-center?jmp=nav#community e vizituar m 30 dhjetor 2016
15
Versionet 32 bitsh t MongoDB prkrahin vetm data baza m t vogla se 2 GB dhe jan t
prshtatshme vetm pr qllime testuese.
Mnyra m e mir, q mundson qasje m t leht nga linja komanduese (command promt) e
sistemit operativ Windows, sht ta instalojm n folderin MongoDB n root t diskut C:.
Prandaj aktivizojm fajllin instalues, e zgjedhim opsionin Custom dhe e instalojm n Folderin
MongoDB n diskun C.
Pasi t prfundoj instalimi, n diskun C duhet po ashtu t krijojm nj folder me emrin data dhe
n brendi t saj nj folder me emrin db. Ktu n folderin db, MongoDB krijon data bazat e saj dhe
koleksionet.
Prfaqsimi i dokumentit varet nga gjuha programuese, por n shum gjuh, dokumentet kan
struktur me prshtatje t natyrshme si hart, ose fjalor, ose hash. N JavaScript, si shembull,
dokumentet prfaqsohen si objekte:
{Emri:'ARSIM'}
elsat n dokumente jan stringjet (vargjet). Secili karakter UTF-8 lejohet n els, me disa
prjashtime t dukshme:
- elsat nuk duket t prmbajn karakterin null10 ( \0 ). Ky karakter prdoret pr t br t ditur
fundin e elsit.
- Karakteret pik ( . ) dhe string ( $ ) kan disa veti speciale dhe duhet prdorur vetm n rrethana
t caktuara. N prgjithsi, kto karaktere po ashtu duhet prdorur si t rezervuara.
10
Karakteri null (edhe terminatori null), thn shkurt null, sht nj karakter kontrolli me vler zero. Ai sht i
pranishm n shum sete t karaktereve, duke prfshir ISO / IEC 646 (ose ASCII), kodin e rregullimit C0, Unicode
dhe EBCDIC. sht n dispozicion n pothuajse t gjitha gjuht e programuese kryesore.
16
- MongoDB sht tip senzitiv dhe case senzitiv. Si shembull, kto dokumente n vijim,
ndryshojn nga njra tjetra,
{"Poena" : 97}
{"Poena" : 97}
{"POENA" : 97}
{"POENA" : 97}
{"Y" : 2, "x" : 1 }
Radha e fushs zakonisht nuk paraqet problem, ngase MongoDB i rirregullon ato fusha.
{
_id: ObjectId(586ef023f5e6a4df17d9cd3d)
titulli: 'MongoDB punimi',
pershkrimi: 'MongoDB eshte NoSql data baze e bazuar ne dokument',
nga: 'Arsim Gjinovci',
url: 'http://www.mjellma.net,
tagjet: ['MongoDB', 'databaza', 'NoSQL'],
pelqime: 100,
komente: [
{
perdoruesi:'arsim1',
porosia: 'Ky eshte komenti im i pare,
dataKrijuar: new Date(2016,12,20,2,15),
pelqime: 7
},
{
perdoruesi:'dijon2',
porosia: 'Komenti i Dijonit,
dataKrijuar: new Date(2016,12,22,7,45),
pelqime: 9
}
]
}
17
7.3.1 Numri unik _id
_id sht numr heksa decimal 12 bajtsh q siguron q secili dokument t jet unik. Nj _id mund
ta japim ne vet kur shnojm n dokument. Nse megjithat nuk e japim ne vet nj _id ather
MongoDB ofron nj id unik pr secilin dokument. Nga ato 12 bajtt e numrit heksa decimal, 4
bajtt e para mbajn shnimet e vuls kohore t astit t shkrimit apo aktualizimit t dokumentit.
3 bajtt pasuese jan pr id-n e makins, 2 bajtt tjera pr id-n e procesit t MongoDB serverit
dhe 3 bajtt e fundit jan thjesht vlera q rriten. [9]
- Integer: Ky tip sht prdorur pr t ruajtur nj vler numerike. Integer mund t jet 32
bit ose 64 bit n varsi t serveri.
- Arrays: Prdoret pr t shtuar vargje apo lista ose dhe vlera t shumfishta n nj els.
- Symbol: Ky tip prdoret pr raste identike si string; por sidoqoft sht e rezervuar pr
gjuht q prdorin tipa specifike t simboleve.
11
BSON / bisn / sht nj format i shkmbimi t dhnave kompjuterike, e prdorur kryesisht si nj ruajtse e t
dhnave dhe format i transferimit n rrjetit, n bazn e t dhnave MongoDB. Paraqet nj form binare pr
prfaqsimin e strukturave t thjeshta t t dhnave, vargjeve asociative (t quajtura objekte apo dokumente n
MongoDB), dhe lloje t ndryshme t t dhnave me interes t veant pr MongoDB.
18
- Date: Prdoret pr regjistrimin e dats dhe kohs aktuale n formatin kohor t sistemit
operativ UNIX. Mund t specifikojm formatin ton kohor duke krijuar objektin pr Data
dhe duke ia prcjell ktij objekti ditn, muajin, vitin.
Startimin e MongoDB e bjm duke e hapur folderin bin q ndodhet brenda folderit MongoDB,
dhe duke e startuar s pari MongoDB serverin. Kt e aktivizojm duke klikuar me maus fajllin
mongod.exe. Me tu aktivizuar MongoDB serveri, n folderin C:/data/db krijohen disa fajlla pr
koleksione, indeksa etj. Serveri pasi t aktivizohet, pret lidhjet nga klientt.
Prndryshe, startimi i MongoDB serverit bhet edhe nga linja komanduese e Windows, me
komandn C:/MongoDB/bin/mongod.exe.
12Regular expression ose regex ose regexp (i quajtur nganjher nj shprehje racionale) sht nj rend i karaktereve
q prcaktojn nj model t krkimit, n shkenca kompjuterike teorike dhe teorin e gjuhs formale,. Zakonisht ky
model sht prdorur m pas nga nj algoritm krkim pr string pr t "gjetur" apo "gjetur dhe t zvendsoj"
operacione n string.
19
Pr t krijuar data baz apo manipuluar me t, duhet startohet nj klient. Njkohsisht mund t
lidhen disa klient pr server dhe ti qasen data bazs.
N Windows, nse e kemi br instalimin sipas udhzimeve m lart, klientin e startojm nga
folderi C:/MongoDB/bin/mongo.exe. Kt e bjm duke klikuar dy her n mongo.exe ose duke
e startuar nga linja komanduese e Windows.
Pra pasi ta startojm serverin dhe klientin, te linja komanduese e klientit me komandn use
emri_bazs e zgjedhim ose krijojm nj data baz.
- Komanda use
Krijimi i nj data baze n MongoDB bhet me komandn use dhe pastaj shkruhet emri i data bazs.
Kjo komand e njjt bn edhe kalimin nga nj data baz ekzistuese n tjetrn. Nse prdorim
komandn p.sh use mydbs dhe databaza mydbs nuk ekziston, ather ajo automatikisht krijohet.
Pr ti shfaqur apo listuar gjitha data bazat n server prdoret komanda show dbs. N fakt me kt
komand shfaqen vetm data bazat q prmbajn koleksione dhe dokumente t regjistruara.
20
- Komanda db
Nse nuk jemi t sigurt se ciln data baz jemi duke e prdorur e shkruajm komandn db dhe na
shfaqet n ekran emri i data bazs aktuale.
- Komanda insert
P.sh krijojm koleksionin mesazhet aty pr aty duke insertuar disa t dhna.
Pasi ta kemi krijuar koleksionin mesazhet, brenda t cilit ndodhet dokumenti (shnimi), me
atributet emri dhe porosia si dhe t dhnat e insertuara n atributet gjegjse, na kthehet n ekran
konfirmimi q regjistrimi u krye pr nj shnim.
WriteResult({ "nInserted" : 1 })
21
- Komanda find() dhe pretty()
- Komanda drop()
Pr ta fshir nj koleksion, prdoret komanda drop() si vijon:
db.mesazhet.drop()
Nse koleksioni mesazhet sht fshir me sukses, e marrim konfirmimin true dhe n t
kundrtn, nse nuk ekziston koleksioni e marrim konfirmimin false.
- Komanda dropDatabase()
Pr ta fshir nj data baz nga serveri s pari e zgjedhim data bazn me komandn use pastaj e
fshim duke shkruar db.dropDatabase().
22
- Komanda update()
db.mesazhet.update({'emri':'Mjellma},{$set:{emri: Mjellma.net}})
- Komanda sort()
Pr ti riradhit sipas alfabetit A Z, prdoret 1 pas atributit q krkohet t sortohet, ndrsa -1, e
bn radhitjen Z A t gjetjeve.
db.mesazhet.find().sort({emri:1})
Tabela 2. Operator dhe kombinimi i tyre pr kushtzime t pyetsorve n MongoDB dhe RDBMS
23
8. Aspekte t avancuara
MongoDB e arrin replikimin me prdorimin e setit t repliks. Nj set replik sht nj grup i
mongod instancave q hostojn t njjtin set t dhnave. N replik, nj nyje sht nyja kryesore
q merr t gjitha operacionet e regjistrimit. T gjitha instancat tjera, t tillat si ato dytsoret,
zbatojn operacionet nga nyja primare, dhe kshtu kan t njjtin grup t t dhnave. Seti i
replikave mund t ket vetm nj nyje primare.
Seti i repliks sht grup dy apo m shum nyjave (n prgjithsi s paku 3 nyje krkohet t
jen).
N setin e repliks, nj nyje sht nyje kryesore (primare) ndrsa nyjat tjera jan dytsore
(sekondare)
Gjitha t dhnat replikohen nga nyja primare n nyjat sekondare
N astin e pengimit t dshtimit t sistemit dhe marrjes automatike t kontrollit ose gjat
mirmbajtjes, vendoset nse duhet t zgjidhet nj nyje primare dhe pastaj zgjidhet nj nyje e
re primare.
13 Replika sht nj kopje e sakt ose model pr dika, veanrisht nj n nj shkall m t vogl. N art paraqet
kopjen apo duplikatin e veprs origjinale. N data baza paraqet kopjimin koh pas kohe t t dhnave nga databaza e
nj kompjuteri n data bazat e kompjuterve tjer. Si rezultat shfaqet data bazat e distribuuar.
24
Pasi rimkmbet nyja e dshtuar, ajo srish i bashkohet setit t repliks dhe tash funksionon
si nyje sekondare.
Klient Aplikacioni
Drejtuesi (Driver)
Shkruan Lexon
Primare
Figura 8. Diagrami tipik i MongoDB
replikimit tregon se cili klient
aplikacion gjithnj ndr vepron me
nyjn primare dhe pastaj nyja
primare replikon t dhnat n nyje
Sekondare Sekondare sekondare. [9]
Nj kllaster me N nyje
Secila nga nyjat mund t bhet nyje primare
Gjitha veprimet pr t shkruar (writte operations) bhen n nyjn primare
Marrje automatike e kontrollit gjat dshtimit
Rimkmbje automatike
Konsensus pr zgjedhjen e nyjs primare
25
Si shembull komanda e dhn n vijim:
rs.add(EMRI_HOSTIT:PORTI)
Si shembull, le t supozojm q instanca jon me emrin mongod1.net sht aktiv n portin 27017.
Pr ta shtuar kt instanc n setin e repliks, e japim komandn rs.add() n mongo klient.
rs.add("mongod1.net:27017")
Mongod instancat mund ti shtojm n setin e replikave ather kur t lidhemi n nyjn primare.
Pr t verifikuar se a jemi t lidhur n nyjn primare apo jo, e shkruajm komandn db.isMaster()
n mongo klient.
Shardingu apo copzimi sht proces i vendosjes s t dhnave npr kompjuter t shumfisht,
dhe kjo paraqet qasjen e MongoDB-s pr ti knaqur krkesat e shtimit t t dhnave. Ashtu si
rritet sasia e t dhnave, nj kompjuter i vetm mund t mos mjaftoj q ti regjistroj gjitha ato t
dhna dhe as t ofroj xhiro t pranueshme pr shkrim dhe lexim (read and write throughput).
Shardingu i zgjedh problemet me shkallzim horizontal. Me sharding, mund t shtojm m shum
kompjuter pr t prkrahur shtimin e t dhnave dhe krkesat pr veprime t shkrimit dhe leximit
t t dhnave.
26
8.2.1 Pse nevojitet shardingu?
Router-i Router-i
(Mongos) (Mongos)
Shard-i Shard-i
(seti i repliks) (seti i repliks)
Figura 9. Shardingu n MongoDB, shardet pr t dhna, config servert pr meta t dhna dhe
routert pr pyetsor
N figurn e msiprme i dallojm tre komponent kryesore: Shardet, Servert konfigurues, dhe
Routert e pyetsorve.
27
Servert konfigurues: Kto server ruajn metadatat e kllasterve. Kto t dhna prmbajn
mapingun pr setin e t dhnave t kllasterve n shard. Routeri i pyetsorve i prdor kto
metadata pr t i synuar veprimet n shardet specifike. N nj mjedis produksioni,
kllastert e shardeve kan saktsisht 3 config server.
Query Routert: Routert e pyetsorve jan thjesht mongo instanca, interfejsa me klient
aplikacionin dhe veprim t drejtprdrejt n shardin gjegjs. Nj query router proceson
dhe pastaj kthen rezultatet te klienti. Nj shard kllaster mund t prmbaj m shum se nj
query router pr t ndar ngarkesat e krkesave nga klienti. Klienti drgon krkesa te nj
query router. N prgjithsi, nj shard kllaster ka shum query router-. [9]
Pr t prdorur MongoDB me PHP, duhet ta prdorim mongo PHP driverin14. Pasi e shkarkova
versionin e fundit t ktij drajveri, e shpalosa dhe e vendosa fajllin php_mongo.dll n folderin e
ekstenzioneve t PHP-s me emrin ext dhe n fajllin php.ini e shtova ekstensionin pr kt fajll
duke e shtuar rreshtin:
extension = php_mongo.dll
Por pr t funksionuar n Windows duhet shtuar edhe fajllin libsasl.dll n shtegun e sistemit
operativ (n rastin tim Windows 7). Ky fajll zakonisht ndodhet n folderin php t Wamp apo Xampp
serverit. Un pr kt punim e kam prdorur Wamp serverin me php versionin 5.4.1.6
Pr ta shtuar fajllin n shtegun e sistemit operativ Windows e hapim panelin kontrollues Control
Pannel, pastaj klikojm te System dhe shtypim ikonn Advanced system settings. Zgjedhim
Environmental Variables dhe te system variabiles e zgjedhim shnimin Path. Klikojm Edit
dhe shtojm shtegun pr folderin e php-s. [10] N rastin tim sht: D:\wamp\bin\php\php5.4.16;
28
Figura 11. Vendosja e shtegut pr php fajllat, n Windows, ngase edhe
PHP edhe MongoDB jan t instaluar n Windows n rastin tim
Pr t krijuar lidhje me MongoDB serverin, s pari e aktivizojm MongoDB serverin. Pastaj duhet
shkruar kodi n php ku specifikohet emri i data bazs (n rastin tim: mjellma). Nse data baza
nuk ekziston, ather MongoDB e krijon aty pr aty nj data baz me emrin q e kemi specifikuar.
<?php
// lidhu ne MongoDB
$m = new MongoClient();
echo "Lidhja ma bazen e te dhenave u krye me sukses.";
// zgjedhe databazen
$db = $m->mjellma;
echo "Baza e te dhenave mjellma eshte selektuar.";
?>
29
Pasi t hapet web faqja na shfaqet konfirmimi q faqja sht duke komunikuar me mongo
serverin.
createCollection("EMRI_I_KOLEKSIONIT");
PHP kodi pr lidhje n mongo data bazn mjellma dhe krijim t koleksionit me emrin artikujt
sht:
<?php
// lidhu ne MongoDB
$m = new MongoClient();
echo "Lidhja ma bazen e te dhenave u krye me sukses.";
echo "<br /><br />";
// zgjedhe databazen
$db = $m->mjellma;
echo "Baza e te dhenave mjellma eshte selektuar.";
echo "<br /><br />";
Pasi t krijohet me sukses koleksioni, n web faqe, mes tjerash na kthehet edhe konfirmimi:
Koleksioni mjellma.artikujt eshte krijuar me sukses.
30
8.3.3 Insertimi i dokumentit
<?php
...
//inserto dokumentin
$document = array(
"titulli" => "Fshehja e fajllave brenda fotografise",
"kategoria" => "Informatike",
"rubrika" => "Steganografi",
"url" => "http://www.mjellma.net",
"nga", "Arsim Gjinovci"
);
$collection->insert($document);
echo "Documenti u insertua me sukses";
?>
Kodi n vijim tregon si mund t krkohen dokumentet n mango, me php, sipas titullit.
<?php
...
//sekelto koleksionin
$collection = $db->artikujt;
echo "Koleksioni ".$collection." eshte selektuar me sukses <br /><br />";
//gjeji dokumentet
$gjetja = $collection->find();
?>
31
8.3.5 Aktualizimi i dokumentit n mongo prmes php-s
Kodi n vijim tregon si mund t aktualizohet dokumenti me t dhna t reja n mango, me php.
<?php
. . .
// aktualizo dokumentin
$collection->update(array("titulli"=>"Fshehja e fajllave brenda fotografise"),
array('$set'=>array("titulli"=>"Steganografia me foto")));
echo "Document u aktualizu me sukses <br /><br />";
?>
Metoda remove() prdoret pr ta fshir nj dokument nga koleksionet e data bazs MangoDB.
<?php
...
// fshije dokumentin
$collection->remove(array("titulli"=>"Formatimi i diskut"));
echo "Dokumenti u fshi me sukses <br />";
?>
32
Edhe metodat tjera si findOne(), save(), limit(), skip(), sort() etj., funksionojn n mnyra t
njjta si metodat e prshkruara m lart [9].
Duke pasur koleksione me madhsi fikse, kjo na sjell deri te pyetja: ka ndodh kur ne prpiqemi
t shtojm brenda koleksioneve t mbuluara q tashm jan t plota? Prgjigja n kt pyetje sht
se koleksionet e mbuluara sillen si pyetsor qarkullues: nse ne nuk kemi hapsir, dokumenti
m i vjetr do t fshihet dhe dokumenti i ri do t ia zn vendin.
33
Disa veprime nuk lejohen te koleksionet e mbuluara. Dokumentet nuk mund t fshihen apo t
largohen (prve vjetrsimit dhe fshirjes automatike). Po ashtu aktualizimet q bjn q dokumenti
t rritet pr nga madhsia, nuk jan t lejuara.
Duke i penguar kto dy veprime, garantohet q dokumenti n koleksionet e mbuluara t ruhet sipas
radhs s insertimit, prandaj nuk ka nevoj t mirmbahet lista e lir pr hapsir nga dokumentet
e larguara. Koleksionet e mbuluara nuk mund t coptohen dhe t ndahen n sharde.
Ndryshe nga koleksionet e zakonshme, ato koleksione t mbuluara duhet t krijohen n mnyr
eksplicite para se t prdoren. Pr t krijuar nj koleksion t mbuluar, prdorim komandn create.
Nga linja komanduese mund ta bjm duke prdorur komandn createCollection:
db.createCollection("koleksioni_im2",
... {"capped" : true, "size" : 100000, "max" : 100});
{ "ok" : true }
Njher sapo e krijojm nj koleksion t mbuluar, ajo m nuk bn t ndryshohet. Pra duhet t
fshihet dhe t rikrijohet nse duam tia ndryshojm vetit. Prandaj duhet pasur kujdes lidhur me
madhsin e koleksioneve t mdha, para se ti krijojm ato.
34
9. Konkluzion
Nga ajo q e vrejtm n punim, shohim se te NoSQL data bazat, e sidomos MongoDB data bazat,
struktura e objektit sht e qart, pa lidhje t shumta komplekse ku megjithat, edhe pse sht
NoSQL, mund t prdorim me shum sukses pyetsor t thell dhe t pasur me opsione.
Data bazat n MongoDB leht shkallzohen. Jan vend pr ruajtjen e t dhnave n form
dokumenti, q kan indeksim pr do atribut, ndihmojn aktualizimet e gjitha nyjave me replikim
e cila mundson disponueshmri t madhe t t dhnave dhe parandalim t dshtimeve apo
humbjeve.
Auto shardingu, pyetsort e pasur me opsione, aktualizimet aty pr aty si dhe prkrahja e madhe
profesionale q ofron MongoDB, pr kt lloj t NoSQL data bazave, bn q seriozisht ta
konsideroj MongoDB-n si opsion pr studimin e m tejm t data bazave t ktij lloji.
Sidomos te rastet e t dhnave Big Data, te menaxhimi i prmbajtjes, infrastruktura mobile dhe
sociale, pastaj po ashtu te menaxhimi i t dhnave t prdoruesve, MongoDB tregohet shum m
fleksibil dhe me performanc m t mir se bazat relacionale.
Motivim shtes pr prdorim t MongoDB, veanrisht pr mua sht mundsia e qasjes n mongo
server dhe manipulimit me t dhna duke prdorur kodin php apo dhe java.
35
Referenca
[2] B. Dayley, Sams Teach Yourself NoSQL with MongoDB in 24 Hours, Pearson Education, 2015.
[6] K. Chodorow, MongoDB: The Definitive Guide, OReilly Media, Inc., 2013.
[12] F. Marchioni, MongoDB for Java Developers, Birmingham: Packt Publishing, 2015.
[13] A. Poggi, Structured and Semi-Structured Data Integration, 2006. [Online]. Available:
http://www.dis.uniroma1.it/~poggi/publi/thesis.pdf. [Qasja 18 12 2016].
36
Lista e figurave
Figura 1. Krahasimi i performancs dhe funksionalitetit t NoSQL dhe RDBMS sistemeve e databazave
.................................................................................................................................................................... 10
Figura 2. Lidhjet e tabelave te data baza relacionale .................................................................................. 13
Figura 3: Nga figura shohim se n MongoDB, t dhnat shfaqen n nj koleksion t vetm, n vend se n
tre tabela si n rastin e bazave te RDBMS .................................................................................................. 13
Figura 4. Serveri i MongoDB duke pritur ky jen e klientve ne portin 27012.......................................... 19
Figura 5. MongoDB serveri ku jan t lidhur dy klient ............................................................................ 20
Figura 6. Regjistrimi i disa shnimeve (dokumenteve) n koleksionin mesazhet n MongoDB ............... 21
Figura 7. Gjetja e t dhnave nga koleksioni me komandn find() dhe find.pretty() ................................. 22
Figura 8. Diagrami tipik i MongoDB replikimit tregon se cili klient aplikacion gjithnj ndr vepron me
nyjn primare dhe pastaj nyja primare replikon t dhnat n nyje sekondare. [9] ................................... 25
Figura 9. Shardingu n MongoDB, shardet pr t dhna, config servert pr meta t dhna dhe routert
pr pyetsor ............................................................................................................................................... 27
Figura 10. Shfaqja e php mongo ekstensionit n listn e ekstensioneve n Wamp Server, pas shtimit t saj.
.................................................................................................................................................................... 28
Figura 11. Vendosja e shtegut pr php fajllat, n Windows, ngase edhe PHP edhe MongoDB jan t
instaluar n Windows n rastin tim ............................................................................................................. 29
Figura 12. Shfaqja e informatave pr Mongo ekstensionin n phpinfo(), pas instalimit t suksesshm dhe
vendosjes s php shtegut n Windows. ....................................................................................................... 29
Figura 13. Konfirmimi i lidhjes s web faqes me MongoDB server me php kod. ..................................... 30
Figura 14. Dokumentet e reja vendosen n fund t radhs [6].................................................................... 33
Figura 15. Kur radha sht e plote, dokumenti i ri ia zn vendin dokumentit t vjetr ............................ 33
Lista e tabelave
37