Vous êtes sur la page 1sur 9

17/2/2017 MongoDBWikipedia,laenciclopedialibre

MongoDB
DeWikipedia,laenciclopedialibre

MongoDB (de la palabra en ingls humongous que significa enorme) es un sistema de base de datos
NoSQLorientadoadocumentos,desarrolladobajoelconceptodecdigoabierto.
MongoDB
MongoDB forma parte de la nueva familia de sistemas de base de datos NoSQL. En lugar de guardar los
Desarrollador(es)
datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en
documentos similares a JSON con un esquema dinmico (MongoDB utiliza una especificacin llamada MongoDBInc.
BSON),haciendoquelaintegracindelosdatosenciertasaplicacionesseamsfcilyrpida. http://www.mongodb.org/
Informacingeneral
El desarrollo de MongoDB empez en octubre de 2007 por la compaa de software 10gen.1
Ahora Modelode Cdigoabierto
MongoDBesunabasededatoslistaparasuusoenproduccinyconmuchascaractersticas(features).Esta desarrollo
base de datos se utiliza mucho en la industria2 , contando con implantaciones en empresas como MTV
Lanzamiento 2009
Network,3Craiglist4oFoursquare5.
inicial
ElcdigobinarioestdisponibleparalossistemasoperativosWindows,Linux,OSXySolaris. ltima 3.2.11(info(https://www.mongodb.or
versin g/downloads#production))
estable 18denoviembrede2016(2
ndice mesesy25das)
ltima 3.4.0rc4(info(https://www.mongod
1 Historia versinen b.org/downloads#development))
2 Concesindelicenciasysoporte pruebas 18denoviembrede2016(2
3 Caractersticasprincipales mesesy25das)
3.1 ConsultasAdhoc Gnero Basededatos,NoSQL
3.2 Indexacin
3.3 Replicacin Programado C++
3.4 Balanceodecarga en
3.5 Almacenamientodearchivos Sistema Multiplataforma
3.6 Agregacin operativo
3.7 EjecucindeJavaScriptdelladodelservidor
Licencia GNUAGPLv3.0(drivers:licencia
4 Fragmentacin(Sharding)
5 Principalesproblemas Apache)
5.1 NoimplementalaspropiedadesACID [editardatosenWikidata]
5.2 Problemasdeconsistencia
5.3 Bloqueoaniveldedocumento
5.4 Lasescriturasnosondurablesniverificables
https://es.wikipedia.org/wiki/MongoDB 1/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

5.5 Problemasdeescalabilidad
6 Casosdeuso
7 Manipulacindedatos:coleccionesydocumentos
8 Lenguajesdeprogramacinsoportados
9 InstrumentosdeMongoDB
10 Referencias
11 Bibliografa
12 Enlacesexternos

Historia
EldesarrollodeMongoDBempezconlaempresadesoftware10genInc.(ahorallamadaMongoDBInc.)1en2007cuandoestabandesarrollandounaplataforma
comoservicio(PaaS)similaralconocidoGoogleAppEngine.6En2009MongoDBfuelanzadocomounproductoindependienteypublicadobajolalicenciade
cdigoabiertoAGPL.7

Enmarzode2011,selanzlaversin1.4yseconsideryacomounabasededatoslistaparasuusoenproduccin.8

Concesindelicenciasysoporte
MongoDBsepuedeobtenerdeunaformagratuitabajolalicenciapblicageneraldeAffero(AGPL)deGNU.9Losdriversparaloslenguajesdeprogramacin
estnbajolalicenciadeApache.Adicionalaestaslicencias,MongoDBInc.ofreceunalicenciacomercialparaMongoDBqueincluyecaractersticasavanzadas
(como integracin con SASL, LDAP, Kerberos10 , Simple Network Management Protocol11 y bsqueda de texto de Rosette Linguistics Platform de Basis
Technology12),herramientasdegestin,monitorizacinybackup,ascomosoporte.13

Caractersticasprincipales
LosiguienteesunabrevedescripcindelascaractersticasprincipalesdeMongoDB:

ConsultasAdhoc
MongoDBsoportalabsquedaporcampos,consultasderangosyexpresionesregulares.Lasconsultaspuedendevolveruncampoespecficodeldocumentopero
tambinpuedeserunafuncinJavaScriptdefinidaporelusuario.

Indexacin
https://es.wikipedia.org/wiki/MongoDB 2/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

CualquiercampoenundocumentodeMongoDBpuedeserindexado,aligualqueesposiblehacerndicessecundarios.ElconceptodendicesenMongoDBes
similaralosencontradosenbasededatosrelacionales.

Replicacin

MongoDBsoportaeltipodereplicacinprimariosecundario.Cadagrupodeprimarioysussecundariossedenominareplicaset 14.Elprimariopuedeejecutar
comandosdelecturayescritura.Lossecundariosreplicanlosdatosdelprimarioyslosepuedenusarparalecturaoparacopiadeseguridad,peronosepueden
realizarescrituras.Lossecundariostienelahabilidaddepoderelegirunnuevoprimarioencasodequeelprimarioactualdejederesponder.

Balanceodecarga

MongoDB se puede escalar de forma horizontal usando el concepto de shard.15 El desarrollador elige una clave de sharding, la cual determina cmo sern
distribuidoslosdatosdeunacoleccin.Losdatossondivididosenrangos(basadoenlaclavedesharding)ydistribuidosatravsdemltiplesshard.Cadashard
puedeserunareplicaset.MongoDBtienelacapacidaddeejecutarseenmltipleservidores,balanceandolacargay/oreplicandolosdatosparapodermantenerel
sistemafuncionandoencasoqueexistaunfallodehardware.LaconfiguracinautomticaesfcildeimplementarbajoMongoDBysepuedenagregarnuevas
servidoresaMongoDBconelsistemadebasededatosfuncionando.

Almacenamientodearchivos
MongoDBpuedeserutilizadocomounsistemadearchivos,tomandolaventajadelacapacidadquetieneMongoDBparaelbalanceodecargaylareplicacinde
datosutilizandomltiplesservidoresparaelalmacenamientodearchivos.EstafuncinsellamaGridFS16yesmsbienunaimplementacinenlosdrivers,noen
el servidor17 , por lo que est incluida en los drivers oficiales que la compaa de MongoDB desarrolla. Estos drivers exponen funciones y mtodos para la
manipulacin de archivos y contenido a los desarrolladores. En un sistema con mltiple servidores, los archivos pueden ser distribuidos y replicados entre los
mismosydeunaformatransparente,deestaformasecreaunsistemaeficientequemanejafallosybalanceodecarga.

Agregacin
MongoDB proporciona un framework de agregacin que permite realizar operaciones similares a las que se obtienen con el comando SQL "GROUP BY". El
frameworkdeagregacinestconstruidocomounpipelineenelquelosdatosvanpasandoatravsdediferentesetapasenloscualesestosdatossonmodificados,
agregados, filtrados y formateados hasta obtener el resultado deseado. Todo este procesado es capaz de utilizar ndices si existieran y se produce en memoria.
Asimismo,MongoDBproporcionaunafuncinMapReducequepuedeserutilizadaparaelprocesamientoporlotesdedatosyoperacionesdeagregacin.

EjecucindeJavaScriptdelladodelservidor
MongoDBtienelacapacidadderealizarconsultasutilizandoJavaScript,haciendoqueestasseanenviadasdirectamentealabasededatosparaserejecutadas.

https://es.wikipedia.org/wiki/MongoDB 3/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

Fragmentacin(Sharding)
Siestasdesarrollandounservicioquesevahaciendopopularolosnivelesdeaccesoabasededatossoncadavezmsaltos,empezarsanotarquetubasede
datosestsiendomartilladaporelexcesodetrficoytuservidorestsufriendoporlosaltosnivelesdeprocesamientocontinuoytepodrasverenlanecesidadde
actualizartuinfraestructuraparasoportarlademanda.

Aquentraenjuegolafragmentacin,eselmodoenelquehacemosnuestrabasededatosescalable.Enlugardetenerunacoleccinenunabasededatos,la
pondramosenvariasbasesdedatosdistribuidas,demodoquealahoradeconsultarlosdatosdedichacoleccin,losrecuperemoscomosideunanicabasede
datossetratase.Mongoseencargardeaveriguardemaneratransparenteenquebasededatosseencuentranlosdatos.

Los fragmentos estarn formados por replica set, de modo que si creamos tres fragmentos, cada uno de los cuales tiene una replica set con tres servidores,
estaramoshablandodeuntotaldenueveservidores.

Sihacemosconsultas,estasserealizarndemaneradistribuidaatravsdeunmduloenrutadorllamadoMongoSquemantendrunpequeopulldeconexiones
alosdistintoshost.Paraconocerenquefragmentodebeconsultarpararecuperardatosdeunacoleccinordenada,seutilizanrangosyshard_key,demodoquese
trocealacoleccinenrangosylesasignaunid(shard_key),quepuedeserunapartedelpropiodocumento,ysedistribuyeenlosfragmentos(replicaset).De
modoquecuandoseconsultelacoleccindebemosproporcionarelshard_key.

Principalesproblemas
NoimplementalaspropiedadesACID
El no implementar las propiedades ACID genera que la base de datos no asegure la durabilidad, la integridad, la consistencia y el aislamiento requeridos
obligatoriamenteenlastransacciones.Esposiblequeenfuturasversionesestosesolucione.

Sobrelabasedeestepuntosedetallanloscuatrosiguientes:

Problemasdeconsistencia
Laslecturasestrictamenteconsistentesvenversionesobsoletasdedocumentos,tambinpuedendevolverdatosincorrectosdelecturasquenuncadeberanhaber
ocurrido.18

Bloqueoaniveldedocumento
MongoDB bloquea la base de datos a nivel de documento ante cada operacin de escritura. Slo se podrn hacer operaciones de escritura concurrentes entre
distintosdocumentos.

https://es.wikipedia.org/wiki/MongoDB 4/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

Lasescriturasnosondurablesniverificables
MongoDBretornacuandotodavanosehaescritolainformacinenelespaciodealmacenamientopermanente,loquepuedeocasionarprdidasdeinformacin.
EnMongoDB2.2secambiaelvalorpordefectoparaescribirenalmenosunarplica,peroestosiguesinsatisfacerladurabilidadnilaverificabilidad.19

Problemasdeescalabilidad

Tieneproblemasderendimientocuandoelvolumendedatossuperalos100GB.20

Casosdeuso
LabasededatosMongoDBesadecuadaparalossiguientesusos:21

Almacenamientoyregistrodeeventos
Parasistemasdemanejodedocumentosycontenido
ComercioElectrnico
Juegos
Problemasdealtovolumendelecturas
Aplicacionesmviles
Almacndedatosoperacionaldeunapginaweb
Manejodecontenido
Almacenamientodecomentarios

Votaciones
Registrodeusuarios
Perfilesdeusuarios
Sesionesdedatos
etc.

Proyectosqueutilizanmetodologasdedesarrolloiterativoogiles
Manejodeestadsticasentiemporeal

MongoDBesutilizadoparaunoovariosdeestoscasosporvariasempresas.22

Manipulacindedatos:coleccionesydocumentos

https://es.wikipedia.org/wiki/MongoDB 5/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

MongoDB guarda la estructura de los datos en documentos tipo JSON con un esquema dinmico llamado BSON, lo que implica que no existe un esquema
predefinido. Los elementos de los datos se denominan documentos y se guardan en colecciones. Una coleccin puede tener un nmero indeterminado de
documentos.Comparandoconunabasededatosrelacional,sepuededecirquelascoleccionessoncomotablasylosdocumentossonregistrosenlatabla.La
diferenciaesqueenunabasededatosrelacionalcadaregistroenunatablatienelamismacantidaddecampos,mientrasqueenMongoDBcadadocumentoenuna
coleccinpuedetenerdiferentescampos.Enundocumento,sepuedenagregar,eliminar,modificarorenombrarnuevoscamposencualquiermomento,23yaque
nohayunesquemapredefinido.Laestructuradeundocumentoessimpleycompuestaporparesllave/valor,parecidoalasmatricesasociativasenunlenguajede
programacin,estoesdebidoaqueMongoDBsigueelformatodeJSON.EnMongoDBlaclaveeselnombredelcampoyelvaloressucontenido,loscualesse
separanmedianteelusode:,talycomosepuedeverenelsiguienteejemplo.Comovalorsepuedenusarnmeros,cadenasodatosbinarioscomoimgeneso
cualquierotro.

{
"_id":ObjectId("4efa8d2b7d284dad101e4bc7"),
"LastName":"PELLERIN",
"FirstName":"Franck",
"Age":29,
"Address":{
"Street":"1chemindesLoges",
"City":"VERSAILLES"
}
}

EnesteejemplosepuedeverqueenelcampoAddresssecontieneotrodocumentoquetieneloscamposdeStreetyCity.

Lenguajesdeprogramacinsoportados
MongoDBtienedriversoficialesparalossiguienteslenguajesdeprogramacin:

C
C++
C#/.NET
Erlang
Haskell
J#
Java
JavaScript
Lisp
Node.js
Perl
PHP
Python
https://es.wikipedia.org/wiki/MongoDB 6/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

Ruby
Scala

InstrumentosdeMongoDB
Lossiguientescomandospuedenserinstaladosparaelmanejoylaadministracindelsistemadebasededatos:

mongo:24 es un Shell interactivo que permite a los desarrolladores y administradores ver, insertar, eliminar y actualizar datos en su base de datos. Este
tambinpermiteentreotrasfuncioneslareplicacindedatos,configuracindesharding,apagarlosservidores,ejecutarJavaScriptytodosloscomandosque
sepuedanrealizar.
mongostat:25esuninstrumentodelneadecomandosquemuestraenresumenunalistadeestadsticasdeunainstanciadeMongoDBenejecucin.Estote
permitevisualizarcuantasinserciones,actualizaciones,eliminaciones,consultasycomandossehanejecutado,perotambincuantamemoriaestutilizando
ycuantotiempohaestadocerradalabasededatos.
mongotop:26esuninstrumentodelneadecomandosqueproveeunmtodoparadarseguimientoalacantidaddetiempoqueduraunalecturaoescriturade
datosenunainstancia.Tambinproveeestadsticasenelniveldecadacoleccin.
mongosniff:27esuninstrumentodelneadecomandosqueproveeunsniffingenlabasededatoshaciendounsniffingeneltrficodelaredquevadesdey
haciaMongoDB.
mongoimport/mongoexport:28 29esuninstrumentodelneadecomandosquefacilitalaimportacinexportacindecontenidodesdeJSON,CSVoTSV.
Tambintieneelpotencialdeimportaroexportarhaciaotrosformatos.
mongodump/mongorestore:30 es un instrumento de lnea de comandos para la creacin de una imagen binaria del contenido de la base de datos. Estos
comandossonutilizadosparalaestrategiadecopiasdeseguridadenMongoDB.

Referencias
1.10gen Announces Company Name Change to MongoDB, Inc. (https://www.mongodb.com/press/10genannouncescompanynamechangemongodbinc). MongoDB.
Consultadoel6demayode2016.
2.http://dbengines.com/en/ranking
3.http://blog.mongodb.org/post/5360007734/mongodbpoweringmtvswebproperties
4.http://blog.mongodb.org/post/5545198613/mongodbliveatcraigslist
5.http://web.archive.org/web/http://blip.tv/mongodb/mongodbatfoursquare3723202
6.http://www.theregister.co.uk/2011/05/25/the_once_and_future_mongodb/
7.http://blog.mongodb.org/post/103832439/theagpl
8.http://blog.mongodb.org/post/472835820/mongodb14readyforproduction
9.http://blog.mongodb.org/post/103832439/theagpl
10.Enterprise Authentication Mechanisms MongoDB Manual 3.2 (https://docs.mongodb.com/manual/core/authenticationmechanismsenterprise/). docs.mongodb.com.
Consultadoel6demayode2016.
11.MonitorMongoDBWithSNMPonLinuxMongoDBManual3.2(https://docs.mongodb.com/manual/tutorial/monitorwithsnmp/).docs.mongodb.com.Consultadoel6
demayode2016.
https://es.wikipedia.org/wiki/MongoDB 7/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

12.Text Search with Basis Technology Rosette Linguistics Platform MongoDB Manual 3.2 (https://docs.mongodb.com/manual/tutorial/textsearchwithrlp/).
docs.mongodb.com.Consultadoel6demayode2016.
13.https://www.mongodb.com/lp/contact/enterprise
14.https://docs.mongodb.org/manual/replication/
15.http://www.mongodb.org/display/DOCS/Sharding
16.http://www.mongodb.org/display/DOCS/GridFS
17.mongodb/specifications(https://github.com/mongodb/specifications/blob/master/source/gridfs/gridfsspec.rst).GitHub.Consultadoel12deabrilde2016.
18.Callmemaybe:MongoDBstalereads(https://aphyr.com/posts/322callmemaybemongodbstalereads)
19.BrokenbyDesign:MongoDBFaultTolerance::Hacking,Distributed(http://hackingdistributed.com/2013/01/29/mongoft/)
20.MongoDBmockedafterposting100GBScalingChecklist(http://jaxenter.com/mongodbmockedafterposting100gbscalingchecklist48377.html)
21.http://www.mongodb.org/display/DOCS/Use+Cases
22.http://web.archive.org/web/http://www.mongodb.org/display/DOCS/Production+Deployments
23.http://www.mongodbspain.com/wpcontent/uploads/2014/03/MongoDBSpainCheetSheet.pdf
24.http://www.mongodb.org/display/DOCS/mongo++The+Interactive+Shell
25.http://docs.mongodb.org/manual/reference/mongostat/
26.http://docs.mongodb.org/manual/reference/mongotop/
27.http://docs.mongodb.org/manual/reference/mongosniff/
28.http://docs.mongodb.org/manual/reference/mongoimport/
29.http://docs.mongodb.org/manual/reference/mongoexport/
30.http://docs.mongodb.org/manual/reference/mongodump/

Bibliografa
Banker,Kyle(28demarzode2011),MongoDBinAction(1stedicin),Manning,p.375,ISBN9781935182870
Chodorow,KristinaDirolf,Michael(23deseptiembrede2010),MongoDB:TheDefinitiveGuide(1stedicin),O'ReillyMedia,p.216,ISBN9781449381561
Pirtle,Mitch(3demarzode2011),MongoDBforWebDevelopment(1stedicin),AddisonWesleyProfessional,p.360,ISBN9780321705334
Hawkins, Tim Plugge, Eelco Membrey, Peter (26 de septiembre de 2010), The Definitive Guide to MongoDB: The NoSQL Database for Cloud and
DesktopComputing(1stedicin),Apress,p.350,ISBN9781430230519

Enlacesexternos
10gen(http://www.10gen.com/)
Pginaoficial(http://www.mongodb.org/)
MongoDBconZanPHP(http://web.archive.org/web/http://zanphp.com/wiki/Clase_MongoDB)
HojadereferenciarpidadecomandosMongoDB(http://www.mongodbspain.com/wpcontent/uploads/2014/03/MongoDBSpainCheetSheet.pdf)
MongoDBSpainComunidadEspaolasobreMongoDB(http://www.mongodbspain.com/es)
CmoinstalarMongoDBenUbuntu(http://universodigital.net/comoinstalarmongodbenubuntu1604/)

https://es.wikipedia.org/wiki/MongoDB 8/9
17/2/2017 MongoDBWikipedia,laenciclopedialibre

Obtenidodehttps://es.wikipedia.org/w/index.php?title=MongoDB&oldid=96140381

Categoras: Basesdedatos Cdigoabierto NoSQL

Estapginafuemodificadaporltimavezel10ene2017alas22:28.
EltextoestdisponiblebajolaLicenciaCreativeCommonsAtribucinCompartirIgual3.0puedenaplicarseclusulasadicionales.Alusarestesitio,usted
aceptanuestrostrminosdeusoynuestrapolticadeprivacidad.
WikipediaesunamarcaregistradadelaFundacinWikimedia,Inc.,unaorganizacinsinnimodelucro.

https://es.wikipedia.org/wiki/MongoDB 9/9

Vous aimerez peut-être aussi