Sunteți pe pagina 1din 13

BazededateMongoDB

LauraIoanaAgapin MasterABD

Cuprins:
1.Scurtadescriere 2.Caracteristici 2.1.InterogariAdhoc 2.2.Interogareacampurilorimbricate 2.3.Indexarea 2.4.Agregareadatelor 2.5.Stocareafisierelor 2.6.ExecutiadecodserversideJavaScript 2.7.Colectiidemarimefixa(cappedcollections) 3.Deployment 3.1.Limbajesuportate 3.2.Replicare 3.2.1.Masterslave 3.2.2.Replicasets 3.3.Fragmentare 4.Managementulsiinterfatagrafica 4.1.Instrumenteoficiale 4.2.Monitorizare 4.3.Interfetegrafice 5.Licentasisuport 6.Problemedetimp 7.Utilizatoriimportanti

1.Scurtadescriere
MongoDBesteunsistemdebazededateNoSQL,orientatpedocumente,cusuportpentru indexare,dezvoltatinC++.AdministreazacolectiidedocumentedetipBSON,cepotfiimbricate inierarhiicomplexesiinacelasitimpsafieusordeinterogatsiindexat,ceeacepermitemultor aplicatiisastochezedateleintrunmodnaturalceseaseamanacutipuldedatasistructuralornativa. DezvoltarealuiMongoDBainceputinOctombrie2007.Primulreleasepublicaavutlocin Februarie2009.

2.Caracteristici
Printrecaracteristicileprincipalesenumara: encodare UTF8 datele NonUTF8potfisalvate,interogatesiregasitecu ajutorulunuitip dedatebinarspecial suport crossplatform: binarele sunt disponibile pentru Windows, Linux, OS X si Solaris. MongoDBpoateficompilatpeaproapeoricesistemlittleendian typerich:suportadate,expresiiregulate,datebinare(toatetipurileBSON) cursorpentruanavigaprintrerezultate.

2.1.InterogariAdhoc
In MongoDB orice camp poate fiinterogatinoricemoment.MongoDBoferasuportpentru interogari de lungime mare si cautare de expresii regulate. Interogarile pot includefunctiiJavaScript definitedeutilizatori(dacafunctiaintoarcevaloareatrue,inseamnacadocumentulafacutmatch). Interogarile pot intoarce campuri specifice (nu neaparat tot documentul), sirezultatelepotfi
3

sortate,saritesilimitate.

2.2.Interogareacampurilorimbricate
Interogarile pot ajunge si la obiecteleintegratesivectori.Deexemplu, dacaobuectuldemai josarfiinclusincolectiausers:

{ "username":"bob", "address":{ "street":"123MainStreet", "city":"Springfield", "state":"NY" } }

Putem interoga pentru acest document (si pentru a afla toate documentelecarecontinNew York)cu: db.users.find({"address.state":"NY"}) Elementelecesuntconsituitedintrunvectorpotdeasemeneasafieinteorgate: db.food.insert({"fruit":["peach","plum","pear"]}) db.food.find({"fruit":"pear"})

2.3.Indexarea

Softwareul suporta indecsi secundari, inclusiv indecsi formati dintro singura cheie, din cheie compusa, unici, nonunici si geospatiali. Campurile imbricate (ca cele de mai sus), pot fi de asemenea indexatem si indexarea unui element de tip vector, va indexa fiecare element din acel vector. La rularea unei interogari, optimizatorul de queryuri al lui MongoDB va incerca un numar de planuri de interogare diferite si il va selecta pe cel mai rapid. Dezvoltatorii pot vedea ce index estefolositcuajutorulfunctieiexplainsipotalegealtindexcuajutorulfunctieihint. Indecsiipotficreatisaustersioricand.

2.4.Agregareadatelor
Pe langa interogarile adhoc, bazele de date MongoDB suporta si un setdeinstrumentede agregare,printrecareMapReducesiofunctiedegrupsimilaracufunctiaGROUPBYdinSQL.

2.5.Stocareafisierelor
Softwareul implementeaza un protocol numit GridFS care este utilizat la stocarea si recuperarea de fisiere din baza de date. Mecanismul de stocare alfisiereloresteutilizatinpluginuri decatreNGINXsilighttpd.

2.6.ExecutiadecodserversideJavaScript
Limbajul de baza pentru MongoDB este JavaScript sipoatefifolositininterogari,functiide agregare(cumarfiMapReduce),sipoatefitrimisdirectbazeidedatepentruafiexecutat. Unexempludecodintrointerogare: db.foo.find({$where:function(){returnthis.x==this.y}}) Unexempludecodtrimisbazeidedatepentruafiexecutat: db.eval(function(name){return"Hello,"+name},["Joe"])
5

AcestexemplureturneazaHello,Joe. Variabilele JavaScript pot fi de asemenea stocate in baza de date si utilizate de orice alt script ca o variabila globala. Orice tip de date JavaScript, inclusivfunctiisiobiecte,potfistocatein MongoDBastfelincatJavaScriptsapoatafiutilizatpentruascrieproceduristocate.

2.7.Colectiidemarimefixa(cappedcollections)
MongoDB suporta colectii demarimefixa, numitecappedcollections.Oastfeldecolectie este creata cu o marime de set si, optional, un numar de elemente. Acestea sunt singurul tip de colectii care mentin ordinea inserarii. De indata ce marimea specificata este atinsa, colectia se comportacaocoadacirculara. Un tip specialdecursor,numittailablecursor,poatefifolositlaacesttipdecolectii.Acest tip de cursor a fost denumit dupa comanda tail f, si nu se inchide dupa ce termina de returnat toate rezultatele, ci ramane in asteptare altor rezultate dereturnat,returnandrezultatenoipemasura ceacesteasuntinserateincolectie.

3.Deployment
MongoDB poate fi buildat si instalat din surse, dar cel mai adeseaesteinstalatdinpachete. Multe din sistemele de management al pachetelor din Linux includ un pachet MongoDB, inclusiv CentOS si Fedora, Debian si Ubuntu,GentoosiArchLinux.Deasemeneasimanageruldepachete alluiOSXincludeMongoDB.Pachetelepotfideasemeneaobtinutesidepesiteuloficial. Sistemul de baze de date MongoDB utilizeaza fisieredememoriemapata,limitandmarimea datelor la 2GB pe masinile de 32 de biti. Serverul MongoDB poate fi utilizat doar pe sistemele littleendian, cu toate ca majoritatea driverelor functioneaza atat pe sistemelelittleendian,catsi

pecelebigendian.

3.1.Limbajesuportate
MongoDBaredrivereoficialepentru: C C++ C# Erlang Haskell Java JavaScript Lisp Perl PHP Python Ruby Scala De asemenea existasiunnumarmarededrivereneoficiale,pentruC#si.NET,ColdFusion, Delphi,Erlang,Factor,Fantom,JVMlanguages(Clojure,Groovy,Scala,etc.),Lua,node.jsetc.

3.2.Replicare
MongoDB suporta replicare masterslave. Un master poate efectua citiri si scrieri. Un slave copiaza datele de la master si poate fi folosit doar pentru citiri sau backupuri (nu sipentru scrieri).

3.2.1.Masterslave La replicarea de tip masterslave, pe masura ce operatiile sunt efectuate de catre master,slaveulvareplicaoriceschimbareladate. Unexempludepornireauneiperechilocalemasterslave. mkdirp~/dbs/master~/dbs/slave ./mongodmasterport10000dbpath~/dbs/master ./mongodslaveport10001dbpath~/dbs/slavesourcelocalhost:10000 3.2.2.Replicasets Replica sets sunt similare cu masterslave, doar ca ele incorporeaza abilitatea slaveuluideaalegeunnoumasterdacacelcurentpica.

3.3.Fragmentare
MongoDB este scalabila pe orizontala folosind un sistem numit sharding,careestesimilar cu modelele descalareBigTablesiPNUTS.Dezvoltatorul isialegeocheiedefragmentare, care determina cum vor fi distribuite datele din colectie. Datele sunt impartite in mai multe bucati, in functie de cheia de fragmentare, si distribuite pe mai multe fragmente. Un fragment este master pentruunulsaumaimultislave. Aplicatia dezvoltatorului trebuie sa stie ca este vorba de un cluster fragmentat cand se executa anumite operatii. De exemplu, un query de tipul findAndModify trebuie sa contina cheia de fragmentare daca colectia este fragmentata. Aplicatia discuta cu un proces special de rutare, numit mongos, care arata identiccuunsingurserverMongoDB.Acestprocesstie cedatesuntpe fiecare fragment si ruteaza requesturile clientului corespunzator. Toate requesturile trec prin acest proces nu numai ca trimite mai departe requesturile si raspunsurile, dar mai efectueazasieventuale

mergeuri sau sortari.Oricenumardeprocesemongospotfirulatedeobiceiunulperaplicatiede serveresterecomandat.

4.Managementulsiinterfatagrafica
4.1.Instrumenteoficiale
Cel mai puternic si util instrument de management este clientul mongo in linie de comanda (denumit si shell). Shellul permite dezvoltatorilor vizualizarea, inserarea, stergerea si updatarea datelor in bazele lor dedate,catsiobtinereadeinformatiidesprereplicare,setareauneifragmentari, oprirea unor servere, executarea de cod JavaScriptm si multe altele. Mongo este construit pe SpiderMonkey,prinurmareesteunshellintotalitateJavaScriptcareare abilitateadeaseconectala servereleMongoDB. Informatiile administrative pot fi de asemenea accesate prin intermediul interfetei de administrator: o pagina simpla html care serveste informatii despre statusul curent al serverului. Din constructie, aceasta interfata are 1000 de porturi pesteportulbazeidedate(http://localhost:28017) sipoatefiopritcuoptiuneanorest. mongostat este un instrument inliniedecomandacareafiseazaolistasimplade statisticiin legatura cu ultima secunda: care inserari, updateuri, stergeri, queryurisicomenziaufostefectuate, catsiprocentuldetimpincarebazadedateafostblocatasicatamemorieutilizeaza. mongosniffscaneazatraficuldereteacareintrasiiesedinMongoDB.

4.2.Monitorizare
ExistapluginuridemonitorizaredisponibilepentruMongoDB:

munin ganglia scout cacti

4.3.Interfetegrafice
Au fost create diverse interfete grafice de catre dezvoltatorii comunitatii MongoDB cu scopuldeafacilitavizualizareadatelor.Printrecelemaipopulareseafla: FangofMongoointerfatagraficabazatapewebcuDjangosijQuery Futon4MongooclonaainterfeteiwebCouchDBFutonpentruMongoDB JMongoBrowseroaplicatiedesktoppentrutoateplatformele Mongo3ointerfatabazatapeRuby MongoHuboaplicatienativaMacOSXpentrumanagementulMongoDB OpricotunshellMongoDBbazatpebrowserscrisinPHP

5.Licentasisuport
MongoDB este disponibil gratuit sub licenta publica GNU Affero. Driverele de limba sunt disponibilesubolicentaApache.

6.Problemedetimp
Obiectele din MongoDBauasignateunObjectID,ceincorporeazaoreprezentarepe32de
10

biti a timpului in secunde fata de baza de timp standard (numarul de secunde care autrecutdela1 ianuarie 1970), alti 64 de biti continand un id al masinii scris pe 24 de biti, un id al procesatorului scris pe 16 biti, si un counter pe 24 de biti. Din cauza dimensiunii fixe a reprezentarii timpului, aceasta este susceptibila de a fi data peste cap, mai exact problema anului 2038. Aplicatiile construite pe baza lui mongo care utilizeaza reprezentarea integrataatimpuluicontinutainObjectID vorinterpretagresitdatelechiardacaMongoDBvacontinuasafunctioneze.

7.Utilizatoriimportanti
MTVNetworks craigslist DisneyInteractiveMediaGroup Wordnik diaspora Shutterfly foursquare bit.ly TheNewYorkTimes SourceForge BusinessInsider CERNLHC Thumbtack AppScale Uber
11

12

Bibliografie:

Banker,Kyle(March28,2011),MongoDBinAction(1sted.),Manning,pp.375,ISBN 9781935182870

Chodorow,KristinaDirolf,Michael(September23,2010),MongoDB:TheDefinitiveGuide (1sted.),O'ReillyMedia,pp.216,ISBN9781449381561

Pirtle,Mitch(March3,2011),MongoDBforWebDevelopment(1sted.),AddisonWesley Professional,pp.360,ISBN9780321705334

Hawkins,TimPlugge,EelcoMembrey,Peter(September26,2010),TheDefinitiveGuide toMongoDB:TheNoSQLDatabaseforCloudandDesktopComputing(1sted.),Apress, pp.350,ISBN9781430230519

13

S-ar putea să vă placă și