100% found this document useful (1 vote)
321 views37 pages

MongoDB, NoSQL Database Management System

MongoDB është dokument data bazë me kod të hapur (open source) i popullarizuar në mesin e zhvilluesve dhe profesionistëve, për shkak të qasjes së saj të shkathët dhe të shkallëzuar. Raste të shpeshta të përdorimit të MongoDB përfshijnë të dhënat e mëdha operative dhe analitike, të menaxhimit dhe të ofrimit të përmbajtjes, infrastrukturës celulare dhe sociale, menaxhimit të të dhënave të përdoruesve etj. MongoDB është shkruar në gjuhën programore C++ dhe zhvilluar në mënyrë 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 licencës. Kodi burimor është lirisht në dispozicion edhe në Github8. Projekti MongoDB udhëhiqet nga ekipi i vet, por shpesh pranohen edhe kontributet nga komuniteti në Internet. [7] Projekti është hartuar për të gjitha sistemet operative të mëdha, duke përfshirë edhe Mac OS X, Windows, dhe Linux.

Uploaded by

Arsim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
321 views37 pages

MongoDB, NoSQL Database Management System

MongoDB është dokument data bazë me kod të hapur (open source) i popullarizuar në mesin e zhvilluesve dhe profesionistëve, për shkak të qasjes së saj të shkathët dhe të shkallëzuar. Raste të shpeshta të përdorimit të MongoDB përfshijnë të dhënat e mëdha operative dhe analitike, të menaxhimit dhe të ofrimit të përmbajtjes, infrastrukturës celulare dhe sociale, menaxhimit të të dhënave të përdoruesve etj. MongoDB është shkruar në gjuhën programore C++ dhe zhvilluar në mënyrë 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 licencës. Kodi burimor është lirisht në dispozicion edhe në Github8. Projekti MongoDB udhëhiqet nga ekipi i vet, por shpesh pranohen edhe kontributet nga komuniteti në Internet. [7] Projekti është hartuar për të gjitha sistemet operative të mëdha, duke përfshirë edhe Mac OS X, Windows, dhe Linux.

Uploaded by

Arsim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

UNIVERSITETI I PRIZRENIT UKSHIN HOTI

FAKULTETI I SHKENCAVE KOMPJUTERIKE

DREJTIMI: Shkenca Kompjuterike dhe Teknologji komunikimi


STUDIMET MASTER

PUNIM SEMINARI

LNDA: Modelimi i avansuar i t dhnave dhe bazs s t dhnave

TEMA: MongoDB aspekte t avancuara

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.

Kategoria e data bazave NoSQL karakterizohet n nj periudh t vonshm t zhvillimit t data


bazave, q ka marr hov kryesisht kto pesmbdhjet vitet e fundit, si prgjigje ndaj problemeve
q shfaqeshin me menaxhimin dhe depozitimin t dhnave t shumta, q prej momentit kur nisi
ekspansioni i Internetit si rrjet global i komunikimit.

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.

Po ashtu si aspekt t avancuar e kam konsideruar edhe ndrlidhjen e MongoDB me PHP,


instalimin dhe konfigurimin e mongo drajverit n Wamp server dhe konfigurimin e php shtegut n
variablat e rrethins t Windowsit, n mnyr q t mund t krijohen dhe menaxhohen data bazat,
koleksionet, dokumentet nga ueb faqja me php kod.

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.

Ndr prfitimet q NoSQL bazat ofrojn jan:

- Copzimi (shardingu) automatik i t dhnave. T dhna t reja automatikisht drejtohen dhe


regjistrohen n nyjn e duhur.
- Prsritje automatike e t dhnave. Secili nga nyjat e shumfishta ruan nj kopje t t
dhnave, deri n nj pik t konfiguruar dhe t caktuar t replikimit.
- Prdorin t dhna pa skem (schema-less) pr t thjeshtuar migrimet e tyre.
- Ndryshimet e skemave pr tabela t mdha, mund t marrin nj koh t gjat dhe madje t
bllokojn tabelat, duke bllokuar do gj q shkruhet n to. Nj baz e t dhnave me nj
skeme lirshm t prcaktuar (si MongoDB, Casasndra, HBase etj.), e bn kt ndryshim
m t leht.
- Shkallzimi (scalability) automatik, duke shtuar nyje t reja. Me shtimin e nyjave t reja,
automatikisht bhet ri-ndarja e t dhnave pr qllime t balancimit t ngarkess. [1]

3. ka jan NoSQL data bazat


Fjala NoSQL q prdoret pr t prshkruar data bazat e ksaj kategorie dhe e ka kuptimin Jo
vetm SQL. NoSQL data bazat jan alternativ e SQL data bazave, q prve tjerash, mund t
implementojn edhe disa nga konceptet e pyetsorve t llojit SQL.

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

Dallojm tre tipa kryesore t data bazave NoSQL:

1. Data bazat q bazohen n regjistrim t elsit / vlerave (Memcached, Coherence, Redis)


2. NoSQL data bazat e sheshta (BigTable, HBase, Accumulo)
3. Data bazat e orientuar n dokument (MongoDB, CouchDB, Cloudant) [3]

4. T dhnat e pa strukturuara dhe gjysm t


strukturuara

4.1 T dhnat e strukturuara

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.

4.1.1 Karakteristikat e t dhnave t strukturuara

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

Tabela 1. Krahasimi mes sistemeve NoSQL dhe RDBMS [1]

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

Figura 1. Krahasimi i performancs dhe funksionalitetit t NoSQL dhe RDBMS sistemeve e


databazave [3]

Tabela n vijim krahason RDBMS dhe MongoDB terminologjin.

RDBMS MongoDB

Data baza Data baza

Tabela Koleksioni

Tuple / rreshti Dokumenti

Kolona Fusha

Lidhja bashkuese e tabelave (join) Dokumentet e bashkuara

elsi primar elsi primar


( _id elsi i caktuar nga MongoDB)

Data baza server dhe klienti

Mysqld / Oracle mongod

Mysql / sqlplus mongo

10
5.1 Disa nga shprehjet n MongoDB si pjes e NoSQL data bazave

5.1.1 Data baza

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

Koleksioni sht nj grup i MongoDB dokumenteve. sht ekuivalenti i tabels te RDBMS.


Koleksioni ekziston brenda nj data baze t vetme. Koleksionet nuk zbatojn detyrimisht ndonj
skem. Dokumentet brenda koleksionit mund t ken fusha t ndryshme. Zakonisht, gjitha
dokumentet n koleksion kan qllime t ngjashme ose q lidhen me njra tjetrn.

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.

5.3.4 Skemat dinamike

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

6. Arsyeja e prdorimit t NoSQL


Rritja e nevojave pr prpunimin e t dhnave n vllime m t mdha, pastaj shpejtsia dhe
varietetet e t dhnave, kan ndryshuar me hapa t shpejta, natyrn e arkivimimit t t dhnave.
N kt mnyr bazat e t dhnave NoSQL q mundsojn ruajtjen e t dhnave pa strukturuara
dhe heterogjene n mas t madhe kan fituar n popullaritet. [5]

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:

- Secili postim (post) duhet t ket titull, prshkrim dhe nj url.


- Secili postim mund t ket nj apo m shum tagje (tag).
- Secili postim e prmban emrin e publikuesit dhe numrin total t plqimeve.
- Po ashtu secili postim ka komente t dhna nga vizitort, s bashku me emrat e tyre,
porosin, datn dhe kohn si dhe plqimet.
- Pastaj, secili postim mund t prmbaj zero apo m shum komente.

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.

7.1 ka sht MongoDB

MongoDB sht nj baz e fuqishme e t dhnave e orientuar n dokument, jo relacionale, dhe


shum platformsh, q ofron performanc t lart, disponueshmri t lart, dhe shkallzueshmri
t leht. MongoDB punon n konceptin e koleksionit dhe t dokumentit. [9]

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),

MongoDB mbshtet indekset e prgjithshme dytsore, duke lejuar nj shumllojshmri t


pyetsorve t shpejt (fast query), dhe ofron mundsi t indeksimit q jan unike, komplekse,
gjeo-hapsinore dhe plotsisht tekstual.

- Agregimi (aggregation)

MongoDB prkrah t ashtuquajturn tub agregimi apo gyp grumbullues q lejon t


ndrtohen agregime komplekse nga copzat e thjeshta dhe ia lejon data bazs optimizimin e tyre.

-Tipet speciale t koleksioneve

MongoDB prkrah koleksionet ttl (time-to-live) pr t dhnat q duhet t skadojn n nj koh t


dhn. Si sht rasti me sesionet. Po ashtu prkrah koleksionet me madhsi fikse, q jan t
dobishme pr t mbajtur t dhnat e fundit, si jan shnimet e sistemit (logs).

- Depozitimi i fajllave (file storage)

MongoDB prkrah protokollin pr prdorim t leht (easy-to-use) pr ruajtjen e fajllave t mdha


si dhe meta datave t fajllave. [5]

7.2 Instalimi i MongoDB

MongoDB mund t instalohet n disa platforma, gjegjsisht sisteme operative si Windows, Linux,
OS X, Solaris.

7.2.1 Instalimi i MongoDB n Windows

Pr ta instaluar MongoDB n Windows, s pari e shkarkojm versionin e duhur pr kt sistem


operativ, nga faqja zyrtare http://www.MongoDB.org. Pr momentin mund ti shkarkojm vetm
versionin pr Windows server 2008 R2 64 bit9, e cila funksionon te versionet 64 bitsh t sistemit
operative mbi Windows XP,

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.

Pr ta instaluar MongoDB, startohet fajlli i shkarkuar q sht fajll ekzekutues me ekstensionin


,msi.

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.

7.3 Si ruhen t dhnat n MongoDB

MongoDB paraqet nj sistem pr menaxhimit e bazs s t dhnave, e projektuar pr web


aplikacione dhe pr infrastrukturn e internetit. Pavarsisht nse aplikacioni ka nevoj pr nj data
baz nyje (node) apo dhjetra t tilla, MongoDB ka mundsi t ofroj performans jashtzakonisht
t mir. [7]

T dhnat n MongoDB rruhen n dokumente q jan ekuivalenti i rreshtave n data bazat


relacionale. Kto dokumente jan t vendosura n koleksione q jan ekuivalenti i tabelave te
bazat relacionale. Dokumentet njihen edhe si zemra e MongoDB dhe paraqesin nj set t rregulluar
t elsave me vlera asociative. Struktura e dokumentit prbhet nga vlerat - elsa ifte t ndara
me presje.

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}

Prve tjerash, e rndsishme sht po ashtu t theksohet se MongoDB dokumenti nuk bn t


prmbaj elsa duplikate. Si shembull mund ta marrim kt dokument:
{"PERSHENDETJE" : TUNG!, {"PERSHENDETJE" : TUNG, MongoDB! }

q n rastin ton sht dokument jo legal i MongoDB.

ifti i elsave / vlerave jan t paracaktuara:{"x" : 1, "y" : 2 }nuk sht i njjt si

{"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]

7.3.2 Data tipat e MongoDB

MongoDB prkrah shum data tipa. Disa nga ato jan:

- String: Ky sht data tip m i zakonshm q prdoret pr t ruajtur t dhnat. String n


MongoDB duhet t jet i vlefshm n UTF-8 standardin.

- Integer: Ky tip sht prdorur pr t ruajtur nj vler numerike. Integer mund t jet 32
bit ose 64 bit n varsi t serveri.

- Boolean: Ky tip sht prdorur pr t ruajtur nj vler boolean (true/ false).

- Double: Ky tip sht prdorur pr t ruajtur vlerat me presje dhjetore.

- Min/Max elsat: Ky tip prdoret pr t krahasuar nj vler kundrejt vlerave m t ulta


dhe m t larta t BSON11 elementeve.

- Arrays: Prdoret pr t shtuar vargje apo lista ose dhe vlera t shumfishta n nj els.

- Timestamp: ctimestamp. sht e dobishme t prdoret pr regjistrimin e kohs s krijimit


apo ndryshimit t e dokumentit.

- Object: Ky data tip prdoret pr dokumentet e bashkangjitura (embedded documents).

- Null: Prdoret pr t shtuar vlerat Null.

- 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.

- Object ID: Ky data tip prdoret pr t regjistruar ID-n e dokumentit.

- Binary data: Prdoret pr regjistrimin e t dhnave n form binare.

- Code: Ky tip prdoret pr t regjistruar kodin JavaScript n dokument.

- Regular expression12: Prdoret pr t regjistruar shprehjet e rregullta apo shprehje


racionale.

7.4 Demonstrimi praktik si punon MongoDB

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.

Figura 4. Serveri i MongoDB duke pritur ky jen e klientve ne portin 27012

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.

Figura 5. MongoDB serveri ku jan t lidhur dy klient

7.4.1 Krijimi dhe insertimi n data baz MongoDB

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.

- Komanda show dbs

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

Ekuivalentin e tabelave n bazat relacionale, te MongoDB e njohim me emrin koleksion.


Koleksionet krijohen aty pr aty (on-the-fly) me regjistrimin e shnimeve q n MongoDB njihet
me emrin dokument. Me komandn insert regjistrojm dokumentet brenda koleksioneve.

P.sh krijojm koleksionin mesazhet aty pr aty duke insertuar disa t dhna.

db.mesazhet.insert( { emri: Arsim, porosia: Prshndetje! })

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 })

N mnyrn e njjt i vendosim edhe disa dokumente (shnime).

Figura 6. Regjistrimi i disa shnimeve (dokumenteve) n koleksionin mesazhet n MongoDB

21
- Komanda find() dhe pretty()

Pr gjetjen e koleksioneve n data baz e shkruajm komandn find(), ndrsa pr ti shfaqur m


bukur grafikisht t gjeturat e prdorim edhe komandn pretty().

db.mesazhet.find() ose db.mesazhet.find().pretty()

Figura 7. Gjetja e t dhnave nga koleksioni me komandn find() dhe find.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()

Pr t aktualizuar nj dokument, n MongoDB prdoret komanda update() n formn si vijon:

db.mesazhet.update({'emri':'Mjellma},{$set:{emri: Mjellma.net}})

Pr t aktualizuar nj a m shum dokumente n t njjtn koh, n MongoDB e prdorim


parametrin multi dhe e vendosim n true.

db.mesazhet.update({emri: Zana}, {$set:{emri:'Arzana'}},{multi:true})

- Komanda sort()

Pr ti sortuar t dhnat e gjetura, prdoret komanda sort() n kombinim me komandn find().

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})

7.4.2 MongoDB kushtzimet e pyetsorve q jan ekuivalente me ato t RDBMS

N mnyr q t krijojm pyetsor m t avancuar, pr gjetjen e shnimeve n data baz, nevojitet


t prdorim disa kushtzime. Pr t krijuar kushtzime, shpesh prdorim operatort si n tabeln e
mposhtme.

Veprimi Sintaksa Shembulli RDBMS Ekuivalenti


where emri =
E barabart {<key>:<value>} db.mesazhet.find({"em":"Mjellma"})
Mjellma'
M e vogl se {<key>:{$lt:<value>}} db.mycol.find({"mosha":{$lt:50}}) where mosha < 50
M e vogl ose
{<key>:{$lte:<value>}} db.mycol.find({"mosha":{$lte:50}}) where mosha <= 50
e barabart
M e madhe se {<key>:{$gt:<value>}} db.mycol.find({"mosha":{$gt:50}}) where mosha > 50
M e madhe se
{<key>:{$gte:<value>}} db.mycol.find({"mosha":{$gte:50}}) where mosha >= 50
ose e barabart
Jo e barabart {<key>:{$ne:<value>}} db.mycol.find({"mosha":{$ne:50}}) where mosha != 50

Tabela 2. Operator dhe kombinimi i tyre pr kushtzime t pyetsorve n MongoDB dhe RDBMS

23
8. Aspekte t avancuara

8.1 Replikimi13 i data bazave n MongoDB

Replikimi (replication), sht procesi i sinkronizimit t dhnave n t gjith servert e shumt.


Replikimi siguron redundanc (tepric) dhe rrit disponueshmrin e t dhnave me kopje t
shumta t t dhnave n servert e ndryshm t bazave t t dhnave t ndryshme. Replikimi
mbron nj baz t dhnash nga humbja n nj server t vetm. Ky proces gjithashtu lejon t
rikthehen t dhnat nga dshtimet e harduerit dhe pengesat n shrbimi. Me kopje shtes t t
dhnave, mund t rimkmbim bazn e dmtuar, raportin, ose bekapin.

8.1.1 Pse nevojitet replikimi i bazs s t dhnave

Baza e replikuar mundson:

- Q t dhnat t mbahen t sigurta


- Disponueshmri e lart e t dhnave (24 or, 7 dit)
- Rimkmbje nga katastrofa
- Pa shkyje (downtime) gjat mirmbajtjes (si te: bekapimet, rindrtimi i indekseve, kompaktimi)
- Shkallzimi i lexueshm ( ekstra kopje q mund t lexojm t dhnat nga to)
- Set i replikave (data bazave t replikuara) sht transparent pr aplikacionet. [9]

8.1.2 Si funksionon puna e replikimit n MongoDB

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]

8.1.3 Veorit e replika setit [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

8.1.4 Si bhet setapimi i repliks

Nj instanc e vetme e MongoDB konverohet n replika set. Pr ta br konvertimin n


replika set i kryejm kto hapa:

E fikim serverin MongoDB q sht aktiv.


Startojm MongoDB serverin duke specifikuar -- replSet opsionin. Sintaksa themelore e
replSet sht:

mongod --port "PORTI" --dbpath "SHTEGU_KU_NDODHET_DATA_BAZA" --replSet


"EMRI_I_INSTANCES_SE_REPLIKA_SETIT"

25
Si shembull komanda e dhn n vijim:

mongod --port 27017 --dbpath "D:\set up\MongoDB\data" --replSet rs0

Do t startoj instancn mongod me emrin rs0, n portin 27017.


Pas ksaj, startojm aplikacionin command prompt dhe lidhemi me kt mongod instanc.
N mongo klient, japim komandn rs.initiate() pr t iniciuar setin e ri t repliks.
Pr ta verifikuar konfigurimin e setit t repliks, e japim komandn rs.conf().
Pr ta verifikuar statusin e repliks, e japim komandn rs.status().

8.1.5 Shtimi i antarit n setin e repliks

Pr t shtuar antar n setin e repliks, startojm mongod instancat n shum kompjuter. M


pastaj startojm klientin dhe e japim komandn rs.add().

Sintaksa pr komandn rs.add(), sht:

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.

8.2 MongoDB - shardingu

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?

Te replikimet, gjitha ato q shkruhen shkojn n nyjn master


Querit e ndjeshme latente ende shkojn te nyja master
Seti i repliks s vetme sht set i limituar n 12 nyje
Memoria nuk mund t jet mjaft i madh ather kur data-seti aktiv sht shum i madh
Disku lokal nuk sht mjaft i madh
Shkallzimi vertikal sht shum i shtrenjt

8.2.2. Sharding n MongoDB

N diagramin e mposhtm sht paraqitur shardingu n MongoDB duke e prdorur kllasterin e


copzuar (sharded cluster).

APP SERVERI APP SERVERI

Router-i Router-i
(Mongos) (Mongos)

2 ose m shum router-


3 Server Config
Server
Konfigurues
Server
Konfigurues
Server
Konfigurues
2 ose m shum sharde

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.

Shardet: Shardet prdoren pr t ruajtur t dhna n ato. Ato ofrojn disponueshmri t


madhe dhe konsistenc pr t dhnat. N nj mjedis produksioni, do shard sht nj set i
veante i repliks.

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]

8.3 Prdorimi i MongoDB me PHP dhe web aplikacion

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

Figura 10. Shfaqja e php mongo ekstensionit n listn e ekstensioneve


n Wamp Server, pas shtimit t saj.

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;

14Mongo drajverin pr PHP e shkarkova nga linku: https://s3.amazonaws.com/drivers.mongodb.org/php/index.html,


22.12.2016. Verzioni q e prdora sht php_mongo-1.6.8-5.4-vc9.dll pr Wamp Serverin tim, q pr compiler e ka
MSVC9 (Visual C++ 2008) dhe thread safety e ka enabled. Kt dll fajll e riemrtova n php_mongo.dll.
Verzionet tjera n at arkiv t shkarkuar jan pr server me tjer verzione t kompajllerve, ose te rastet kur n
emrtim t fajllit ndodhet e shnuar _nts, ky verzion prdoret pr rastet kur thread safety sht disabled. Gjitha
kko informata pr kompajler dhe thread safety lexohen n phpinfo().

28
Figura 11. Vendosja e shtegut pr php fajllat, n Windows, ngase edhe
PHP edhe MongoDB jan t instaluar n Windows n rastin tim

Figura 12. Shfaqja e


informatave pr Mongo
ekstensionin n phpinfo(), pas
instalimit t suksesshm dhe
vendosjes s php shtegut n
Windows.

8.3.1 Lidhja me MongoDB data bazn dhe selektimi i saj

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 kodi pr lidhje n mongo data baz 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.";
?>

29
Pasi t hapet web faqja na shfaqet konfirmimi q faqja sht duke komunikuar me mongo
serverin.

Figura 13. Konfirmimi i lidhjes s web faqes


me MongoDB server me php kod.

8.3.2 Krijimi i nj koleksioni n MongoDB me PHP

Pr t krijuar nj koleksion n MongoDB me PHP kod, e prdorim komandn

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 />";

//krijo nje koleksion


$collection = $db->createCollection("artikujt");
echo "Koleksioni ".$collection." eshte krijuar me sukses";
?>

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

Pr t insertuar dokumente prmes kodit t PHP-s n koleksion t MongoDB, e prdorim


metodn insert().

<?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";

?>

8.3.4 Gjetja e gjitha dokumenteve me php, n MongoDB

Pr gjetjen e gjitha dokumenteve t regjistruara n koleksionin e caktuar n nj MongoDB data


baz e prdorim metodn find().

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();

// bene qe gjetja te shfaq titujt e dokumenteve


foreach ($gjetja as $document) {
echo $document["titulli"] . "<br />";
}

?>

31
8.3.5 Aktualizimi i dokumentit n mongo prmes php-s

Pr ta aktualizuar dokumentin n mangodb, prmes php kodit prdoret metoda update().

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 />";

// shfaq dokumentet e aktualizuar


$gjetja = $collection->find();

// perserit gjetjen per te shfaq dokumentet


echo "Dokumenti i aktualizuar <br />";
foreach ($gjetja as $document) {
echo $document["titulli"] . "<br />";
}

?>

8.4.5 Fshirja e dokumentit n MongoDB koleksion me kod nga php

Metoda remove() prdoret pr ta fshir nj dokument nga koleksionet e data bazs MangoDB.

PHP kodi ku sht implementuar metoda remove(), esht si vijon:

<?php
...

// fshije dokumentin
$collection->remove(array("titulli"=>"Formatimi i diskut"));
echo "Dokumenti u fshi me sukses <br />";

// shfaqi dokumentet e mbetura


$gjetja = $collection->find();

// perserit gjitha titujt ne dokument


echo "Dokumenti i aktualizuar <br /><br />";
foreach ($gjetja as $document) {
echo $document["titulli"] . "<br />"; }

?>

32
Edhe metodat tjera si findOne(), save(), limit(), skip(), sort() etj., funksionojn n mnyra t
njjta si metodat e prshkruara m lart [9].

8.5 Koleksionet e mbuluara

Zakonisht, koleksionet n MongoDB krijohen n mnyr dinamike dhe rriten automatikisht n


madhsi pr tu prshtatur me t dhnat shtes. MongoDB po ashtu prkrah edhe tipa tjera t
koleksioneve, si ato t quajtura koleksione t mbuluara (capped colections). Kto koleksione
krijohen paraprakisht n madhsi fikse.

Figura 14. Dokumentet e reja vendosen n fund t


radhs [6]

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.

Figura 15. Kur radha sht e plote, dokumenti i ri ia


zn vendin dokumentit t vjetr

Kjo do t thot se koleksionet e mbuluara automatikisht vjetrsojn dokumentet e vjetra ashtu si


shtohen dokumentet e reja.

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.

8.5.1 Krijimi i koleksioneve t mbuluara

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_im", {"capped" : true, "size" : 100000});


{ "ok" : true }

Me komandn e m parme krijuam nj koleksion t mbuluar me emrin koleksioni_im, q e ka


madhsin fikse prej 100,000 bajt. Komanda createCollection po ashtu mund t specifikoj kufirin
e numrit t dokumenteve n koleksionin e mbuluar si shtes n mnyr q ta kufizoj madhsin:

db.createCollection("koleksioni_im2",
... {"capped" : true, "size" : 100000, "max" : 100});
{ "ok" : true }

Kt mund ta prdorim, pr shembull te rastet kur dshirojm q 10 artikujt e lajmeve ti kufizojm


n 1000 dokumente.

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.

Opsion tjetr i koleksioneve t mbuluara sht q ta konvertojm nj koleksion ekzistues t


zakonshm, n koleksion t mbuluar. Kt e bjm me komandn convertToCapped.

db.runCommand({"convertToCapped" : "shkolla", "size" : 10000});


{ "ok" : true }

Me komandn convertToCapped e konvertuam koleksionin shkolla n koleksion t mbuluar me

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

[1] E. Lau, Quora, 30 Jan 2011. [Online]. Available: https://www.quora.com/What-are-the-problems-


that-a-NoSQL-database-tries-to-solve. [Qasja 21 12 2016].

[2] B. Dayley, Sams Teach Yourself NoSQL with MongoDB in 24 Hours, Pearson Education, 2015.

[3] H. MIr, ZeroToProTraining.com, [Online]. Available:


http://zerotoprotraining.com/index.php?mode=topic&id=11. [Qasja 21 12 2016].

[4] Webopedia, [Online]. Available: http://www.webopedia.com/TERM/S/structured_data.html.


[Qasja 23 12 2016].

[5] Microsoft.com, 22 11 2016. [Online]. Available: https://docs.microsoft.com/en-


us/azure/documentdb/documentdb-nosql-vs-sql. [Qasja 21 12 2016].

[6] K. Chodorow, MongoDB: The Definitive Guide, OReilly Media, Inc., 2013.

[7] K. Banker, MongoDB in Action, Manning Publications Co., 2012.

[8] MongoDB.com, 27 7 2013. [Online]. Available: https://www.mongodb.com/press/10gen-


announces-company-name-change-mongodb-inc. [Qasja 20 12 2016].

[9] Tutorialspoint.com, 2016. [Online]. Available:


https://www.tutorialspoint.com/mongodb/mongodb_tutorial.pdf. [Qasja 20 12 2016].

[10] PHP.net, [Online]. Available:


http://php.net/manual/en/faq.installation.php#faq.installation.addtopath. [Qasja 24 12 2016].

[11] C. Strauch, NoSQL Databases, Hochschule der Medien, Stuttgart.

[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

Tabela 1. Krahasimi mes sistemeve NoSQL dhe RDBMS [1] ..................................................................... 9


Tabela 2. Operator dhe kombinimi i tyre pr kushtzime t pyetsorve n MongoDB dhe RDBMS..... 23

37

You might also like