Está en la página 1de 7

27/3/2017 MongoDBWikipedia,laenciclopedialibre

MongoDB
DeWikipedia,laenciclopedialibre

MongoDB (de la palabra en ingls humongous que


significaenorme)esunsistemadebasededatosNoSQL
orientadoadocumentos,desarrolladobajoelconceptode
MongoDB
cdigoabierto. Desarrollador(es)

MongoDBformapartedelanuevafamiliadesistemasde MongoDBInc.
base de datos NoSQL. En lugar de guardar los datos en http://www.mongodb.org/
tablas como se hace en las base de datos relacionales, Informacingeneral
MongoDB guarda estructuras de datos en documentos Modelode Cdigoabierto
similares a JSON con un esquema dinmico (MongoDB desarrollo
utiliza una especificacin llamada BSON), haciendo que
laintegracindelosdatosenciertasaplicacionesseams Lanzamiento 2009
fcilyrpida. inicial
ltima 3.2.11(info(https://www.mongodb.or
El desarrollo de MongoDB empez en octubre de 2007 versin g/downloads#production))
porlacompaadesoftware10gen.1AhoraMongoDBes estable 18denoviembrede2016(4
una base de datos lista para su uso en produccin y con mesesy5das)
muchas caractersticas (features). Esta base de datos se
ltima 3.4.0rc4(info(https://www.mongod
utiliza mucho en la industria2 , contando con versinen b.org/downloads#development))
implantaciones en empresas como MTV Network,3 pruebas 18denoviembrede2016(4
Craiglist4oFoursquare5. mesesy5das)

El cdigo binario est disponible para los sistemas Gnero Basededatos,NoSQL


operativosWindows,Linux,OSXySolaris. Programado C++
en
Sistema Multiplataforma
ndice operativo
Licencia GNUAGPLv3.0(drivers:licencia
1 Historia Apache)
2 Concesindelicenciasysoporte [editardatosenWikidata]
3 Caractersticasprincipales
3.1 ConsultasAdhoc
3.2 Indexacin
3.3 Replicacin
3.4 Balanceodecarga
3.5 Almacenamientodearchivos
3.6 Agregacin
3.7 Ejecucin de JavaScript del lado del
servidor
4 Fragmentacin(Sharding)
5 Principalesproblemas
5.1 NoimplementalaspropiedadesACID
5.2 Problemasdeconsistencia
5.3 Bloqueoaniveldedocumento
5.4 Las escrituras no son durables ni
verificables
5.5 Problemasdeescalabilidad
6 Casosdeuso
7 Manipulacin de datos: colecciones y
documentos
8 Lenguajesdeprogramacinsoportados

https://es.wikipedia.org/wiki/MongoDB 1/7
27/3/2017 MongoDBWikipedia,laenciclopedialibre

9 InstrumentosdeMongoDB
10 Referencias
11 Bibliografa
12 Enlacesexternos

Historia
EldesarrollodeMongoDBempezconlaempresadesoftware10genInc.(ahorallamadaMongoDBInc.)1en
2007 cuando estaban desarrollando una plataforma como servicio (PaaS) similar al conocido Google App
Engine.6 En 2009 MongoDB fue lanzado como un producto independiente y publicado bajo la licencia de
cdigoabiertoAGPL.7

En marzo de 2011, se lanz la versin 1.4 y se consider ya como una base de datos lista para su uso en
produccin.8

Concesindelicenciasysoporte
MongoDBsepuedeobtenerdeunaformagratuitabajolalicenciapblicageneraldeAffero(AGPL)deGNU.9
LosdriversparaloslenguajesdeprogramacinestnbajolalicenciadeApache.Adicionalaestaslicencias,
MongoDB Inc. ofrece una licencia comercial para MongoDB que incluye caractersticas avanzadas (como
integracinconSASL,LDAP,Kerberos10,SimpleNetworkManagementProtocol11ybsquedadetextode
RosetteLinguisticsPlatformdeBasisTechnology12 ), herramientas de gestin, monitorizacin y backup, as
comosoporte.13

Caractersticasprincipales
LosiguienteesunabrevedescripcindelascaractersticasprincipalesdeMongoDB:

ConsultasAdhoc
MongoDBsoportalabsquedaporcampos,consultasderangosyexpresionesregulares.Lasconsultaspueden
devolver un campo especfico del documento pero tambin puede ser una funcin JavaScript definida por el
usuario.

Indexacin
Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer ndices
secundarios.ElconceptodendicesenMongoDBessimilaralosencontradosenbasededatosrelacionales.

Replicacin
MongoDB soporta el tipo de replicacin primariosecundario. Cada grupo de primario y sus secundarios se
denominareplicaset 14.Elprimariopuedeejecutarcomandosdelecturayescritura.Lossecundariosreplican
losdatosdelprimarioyslosepuedenusarparalecturaoparacopiadeseguridad,peronosepuedenrealizar
escrituras. Los secundarios tiene la habilidad de poder elegir un nuevo primario en caso de que el primario
actualdejederesponder.

Balanceodecarga

MongoDB se puede escalar de forma horizontal usando el concepto de shard.15 El desarrollador elige una
https://es.wikipedia.org/wiki/MongoDB 2/7
27/3/2017 MongoDBWikipedia,laenciclopedialibre

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 distribuidos los datos de una coleccin. Los datos son
divididos en rangos (basado en la clave de sharding) y distribuidos a travs de mltiples shard. Cada shard
puede ser una replica set. MongoDB tiene la capacidad de ejecutarse en mltiple servidores, balanceando la
carga y/o replicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de
hardware. La configuracin automtica es fcil de implementar bajo MongoDB y se pueden agregar nuevas
servidoresaMongoDBconelsistemadebasededatosfuncionando.

Almacenamientodearchivos
MongoDB puede ser utilizado como un sistema de archivos, tomando la ventaja de la capacidad que tiene
MongoDB para el balanceo de carga y la replicacin de datos utilizando mltiples servidores para el
almacenamientodearchivos.EstafuncinsellamaGridFS16yesmsbienunaimplementacinenlosdrivers,
noenelservidor17,porloqueestincluidaenlosdriversoficialesquelacompaadeMongoDBdesarrolla.
Estosdriversexponenfuncionesymtodosparalamanipulacindearchivosycontenidoalosdesarrolladores.
Enunsistemaconmltipleservidores,losarchivospuedenserdistribuidosyreplicadosentrelosmismosyde
unaformatransparente,deestaformasecreaunsistemaeficientequemanejafallosybalanceodecarga.

Agregacin
MongoDB proporciona un framework de agregacin que permite realizar operaciones similares a las que se
obtienenconelcomandoSQL"GROUPBY".Elframeworkdeagregacinestconstruidocomounpipelineen
elquelosdatosvanpasandoatravsdediferentesetapasenloscualesestosdatossonmodificados,agregados,
filtradosyformateadoshastaobtenerelresultadodeseado.Todoesteprocesadoescapazdeutilizarndicessi
existieranyseproduceenmemoria.Asimismo,MongoDBproporcionaunafuncinMapReducequepuedeser
utilizadaparaelprocesamientoporlotesdedatosyoperacionesdeagregacin.

EjecucindeJavaScriptdelladodelservidor
MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas
directamentealabasededatosparaserejecutadas.

Fragmentacin(Sharding)
Siestasdesarrollandounservicioquesevahaciendopopularolosnivelesdeaccesoabasededatossoncada
vez ms altos, empezars a notar que tu base de datos est siendo martillada por el exceso de trfico y tu
servidor est sufriendo por los altos niveles de procesamiento continuo y te podras ver en la necesidad de
actualizartuinfraestructuraparasoportarlademanda.

Aquentraenjuegolafragmentacin,eselmodoenelquehacemosnuestrabasededatosescalable.Enlugar
detenerunacoleccinenunabasededatos,lapondramosenvariasbasesdedatosdistribuidas,demodoquea
la hora de consultar los datos de dicha coleccin, los recuperemos como si de una nica base de datos se
tratase.Mongoseencargardeaveriguardemaneratransparenteenquebasededatosseencuentranlosdatos.

Los fragmentos estarn formados por replica set, de modo que si creamos tres fragmentos, cada uno de los
cualestieneunareplicasetcontresservidores,estaramoshablandodeuntotaldenueveservidores.

Si hacemos consultas, estas se realizarn de manera distribuida a travs de un mdulo enrutador llamado
MongoSquemantendrunpequeopulldeconexionesalosdistintoshost.Paraconocerenquefragmento
debeconsultarpararecuperardatosdeunacoleccinordenada,seutilizanrangosyshard_key,demodoquese
trocealacoleccinenrangosylesasignaunid(shard_key),quepuedeserunapartedelpropiodocumento,y
se distribuye en los fragmentos (replica set). De modo que cuando se consulte la coleccin debemos
proporcionarelshard_key.

https://es.wikipedia.org/wiki/MongoDB 3/7
27/3/2017 MongoDBWikipedia,laenciclopedialibre

Principalesproblemas
NoimplementalaspropiedadesACID
ElnoimplementarlaspropiedadesACIDgeneraquelabasededatosnoasegureladurabilidad,laintegridad,
la consistencia y el aislamiento requeridos obligatoriamente en las transacciones. Es posible que en futuras
versionesestosesolucione.

Sobrelabasedeestepuntosedetallanloscuatrosiguientes:

Problemasdeconsistencia
Laslecturasestrictamenteconsistentesvenversionesobsoletasdedocumentos,tambinpuedendevolverdatos
incorrectosdelecturasquenuncadeberanhaberocurrido.18

Bloqueoaniveldedocumento
MongoDB bloquea la base de datos a nivel de documento ante cada operacin de escritura. Slo se podrn
haceroperacionesdeescrituraconcurrentesentredistintosdocumentos.

Lasescriturasnosondurablesniverificables
MongoDB retorna cuando todava no se ha escrito la informacin en el espacio de almacenamiento
permanente,loquepuedeocasionarprdidasdeinformacin.EnMongoDB2.2secambiaelvalorpordefecto
paraescribirenalmenosunarplica,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

https://es.wikipedia.org/wiki/MongoDB 4/7
27/3/2017 MongoDBWikipedia,laenciclopedialibre

Manipulacindedatos:coleccionesydocumentos
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
documentosyseguardanencolecciones.Unacoleccinpuedetenerunnmeroindeterminadodedocumentos.
Comparando con una base de datos relacional, se puede decir que las colecciones son como tablas y los
documentossonregistrosenlatabla.Ladiferenciaesqueenunabasededatosrelacionalcadaregistroenuna
tablatienelamismacantidaddecampos,mientrasqueenMongoDBcadadocumentoenunacoleccinpuede
tenerdiferentescampos.Enundocumento,sepuedenagregar,eliminar,modificarorenombrarnuevoscampos
encualquiermomento,23yaquenohayunesquemapredefinido.Laestructuradeundocumentoessimpley
compuesta por pares llave/valor, parecido a las matrices asociativas en un lenguaje de programacin, esto es
debidoaqueMongoDBsigueelformatodeJSON.EnMongoDBlaclaveeselnombredelcampoyelvalores
su contenido, los cuales se separan mediante el uso de :, tal y como se puede ver en el siguiente ejemplo.
Comovalorsepuedenusarnmeros,cadenasodatosbinarioscomoimgenesocualquierotro.

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

EnesteejemplosepuedeverqueenelcampoAddresssecontieneotrodocumentoquetieneloscamposde
StreetyCity.

Lenguajesdeprogramacinsoportados
MongoDBtienedriversoficialesparalossiguienteslenguajesdeprogramacin:

C
C++
C#/.NET
Erlang
Haskell
J#
Java
JavaScript
Lisp
Node.js
Perl
PHP
Python
Ruby
Scala

InstrumentosdeMongoDB
Lossiguientescomandospuedenserinstaladosparaelmanejoylaadministracindelsistemadebasededatos:

mongo:24 es un Shell interactivo que permite a los desarrolladores y administradores ver, insertar,
eliminaryactualizardatosensubasededatos.Estetambinpermiteentreotrasfuncioneslareplicacin

https://es.wikipedia.org/wiki/MongoDB 5/7
27/3/2017 MongoDBWikipedia,laenciclopedialibre

dedatos,configuracindesharding,apagarlosservidores,ejecutarJavaScriptytodosloscomandosque
sepuedanrealizar.
mongostat:25esuninstrumentodelneadecomandosquemuestraenresumenunalistadeestadsticasde
unainstanciadeMongoDBenejecucin.Estotepermitevisualizarcuantasinserciones,actualizaciones,
eliminaciones, consultas y comandos se han ejecutado, pero tambin cuanta memoria est utilizando y
cuantotiempohaestadocerradalabasededatos.
mongotop:26esuninstrumentodelneadecomandosqueproveeunmtodoparadarseguimientoala
cantidad de tiempo que dura una lectura o escritura de datos en una instancia. Tambin provee
estadsticasenelniveldecadacoleccin.
mongosniff:27 es un instrumento de lnea de comandos que provee un sniffing en la base de datos
haciendounsniffingeneltrficodelaredquevadesdeyhaciaMongoDB.
mongoimport/mongoexport:28 29 es un instrumento de lnea de comandos que facilita la importacin
exportacindecontenido desde JSON,CSV o TSV. Tambin tiene el potencialdeimportaroexportar
haciaotrosformatos.
mongodump/mongorestore:30 es un instrumento de lnea de comandos para la creacin de una imagen
binariadelcontenidodelabasededatos.Estoscomandossonutilizadosparalaestrategiadecopiasde
seguridadenMongoDB.

Referencias
1.10genAnnouncesCompanyNameChangetoMongoDB,Inc.(https://www.mongodb.com/press/10genannounces
companynamechangemongodbinc).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.EnterpriseAuthenticationMechanismsMongoDBManual3.2(https://docs.mongodb.com/manual/core/authentic
ationmechanismsenterprise/).docs.mongodb.com.Consultadoel6demayode2016.
11.MonitorMongoDBWithSNMPonLinuxMongoDBManual3.2(https://docs.mongodb.com/manual/tutorial/m
onitorwithsnmp/).docs.mongodb.com.Consultadoel6demayode2016.
12.TextSearchwithBasisTechnologyRosetteLinguisticsPlatformMongoDBManual3.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/mon
goft/)
20.MongoDBmockedafterposting100GBScalingChecklist(http://jaxenter.com/mongodbmockedafterposting100
gbscalingchecklist48377.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/

https://es.wikipedia.org/wiki/MongoDB 6/7
27/3/2017 MongoDBWikipedia,laenciclopedialibre

Bibliografa
Banker, Kyle (28 de marzo de 2011), MongoDB in Action (1st edicin), Manning, p. 375,
ISBN9781935182870
Chodorow,KristinaDirolf,Michael(23deseptiembrede2010),MongoDB:TheDefinitiveGuide(1st
edicin),O'ReillyMedia,p.216,ISBN9781449381561
Pirtle, Mitch (3 de marzo de 2011), MongoDB for Web Development (1st edicin), AddisonWesley
Professional,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 Desktop Computing (1st edicin), 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/2
014/03/MongoDBSpainCheetSheet.pdf)
MongoDBSpainComunidadEspaolasobreMongoDB(http://www.mongodbspain.com/es)
CmoinstalarMongoDBenUbuntu (http://universodigital.net/comoinstalarmongodbenubuntu160
4/)

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

Categoras: Basesdedatos Cdigoabierto NoSQL

Estapginafuemodificadaporltimavezel15mar2017alas11:56.
EltextoestdisponiblebajolaLicenciaCreativeCommonsAtribucinCompartirIgual3.0pueden
aplicarseclusulasadicionales.Alusarestesitio,ustedaceptanuestrostrminosdeusoynuestrapoltica
deprivacidad.
WikipediaesunamarcaregistradadelaFundacinWikimedia,Inc.,unaorganizacinsinnimode
lucro.

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