mongodb informcion completa

8
20/9/2015 MongoDB Wikipedia, la enciclopedia libre https://es.wikipedia.org/wiki/MongoDB 1/8 MongoDB Desarrollador 10gen http://www.mongodb.org/ Información general Modelo de desarrollo Código abierto Lanzamiento inicial 2009 Última versión estable 3.0.5 (info (http://www.mongodb.org/downloads)) 28 de julio de 2015 Última versión en pruebas 2.6.11rc1 2015 de agosto de 04 Género Base de datos, NoSQL Programado en C++ Sistema operativo Multiplataforma Licencia GNU AGPL v3.0 (drivers: licencia Apache) [editar datos en Wikidata] MongoDB De Wikipedia, la enciclopedia libre MongoDB (de la palabra en inglés “humongous” que significa enorme) es un sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de código abierto. MongoDB forma parte de la nueva familia de sistemas de base de datos NoSQL. En vez de guardar los datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en documentos tipo JSON con un esquema dinámico (MongoDB llama ese formato BSON), haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida. El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de software 10gen. [ cita requerida] Ahora MongoDB es una base de datos lista para su uso en producción y con muchas características (features). Esta base de datos se utiliza mucho en la industria 1 y MTV Network, 2 Craiglist 3 y Foursquare 4 son algunas de las empresas que utilizan esta base de datos. El código binario está disponible para los sistemas operativos Windows, Linux, OS X y Solaris. Índice 1 Historia 2 Concesión de licencias y soporte 3 Características principales 3.1 Consultas Ad hoc 3.2 Indexación 3.3 Replicación 3.4 Balanceo de carga 3.5 Almacenamiento de archivos 3.6 Agregación 3.7 Ejecución de JavaScript del lado del servidor 4 Fragmentacion (Sharding) 5 Principales problemas 5.1 No implementa las propiedades acid 5.2 Problemas de consistencia 5.3 Bloqueo a nivel de documento

Upload: dianagomezperez

Post on 20-Feb-2016

8 views

Category:

Documents


0 download

DESCRIPTION

MongoDB informcion completa

TRANSCRIPT

Page 1: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

https://es.wikipedia.org/wiki/MongoDB 1/8

MongoDB

Desarrollador

10genhttp://www.mongodb.org/

Información general

Modelo dedesarrollo

Código abierto

Lanzamientoinicial

2009

Últimaversiónestable

3.0.5 (info(http://www.mongodb.org/downloads))28 de julio de 2015

Últimaversión enpruebas

2.6.11­rc12015 de agosto de 04

Género Base de datos, NoSQL

Programadoen

C++

Sistemaoperativo

Multiplataforma

Licencia GNU AGPL v3.0 (drivers: licenciaApache)

[editar datos en Wikidata]

MongoDBDe Wikipedia, la enciclopedia libre

MongoDB (de la palabra en inglés “humongous” quesignifica enorme) es un sistema de base de datosNoSQL orientado a documentos, desarrollado bajo elconcepto de código abierto.

MongoDB forma parte de la nueva familia desistemas de base de datos NoSQL. En vez de guardarlos datos en tablas como se hace en las base de datosrelacionales, MongoDB guarda estructuras de datos endocumentos tipo JSON con un esquema dinámico(MongoDB llama ese formato BSON), haciendo quela integración de los datos en ciertas aplicaciones seamás fácil y rápida.

El desarrollo de MongoDB empezó en octubre de2007 por la compañía de software 10gen.[cita requerida] Ahora MongoDB es una base de datoslista para su uso en producción y con muchascaracterísticas (features). Esta base de datos se utilizamucho en la industria1 y MTV Network,2 Craiglist3 yFoursquare4 son algunas de las empresas que utilizanesta base de datos.

El código binario está disponible para los sistemasoperativos Windows, Linux, OS X y Solaris.

Índice

1 Historia2 Concesión de licencias y soporte3 Características principales

3.1 Consultas Ad hoc3.2 Indexación3.3 Replicación3.4 Balanceo de carga3.5 Almacenamiento de archivos3.6 Agregación3.7 Ejecución de JavaScript del lado delservidor

4 Fragmentacion (Sharding)5 Principales problemas

5.1 No implementa las propiedades acid5.2 Problemas de consistencia

5.3 Bloqueo a nivel de documento

Page 2: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

https://es.wikipedia.org/wiki/MongoDB 2/8

5.3 Bloqueo a nivel de documento5.4 Las escrituras no son durables niverificables5.5 Problemas de escalabilidad

6 Casos de uso7 Manipulación de datos: colecciones ydocumentos8 Lenguajes de programación soportados9 Instrumentos de MongoDB10 Referencias11 Bibliografía12 Enlaces externos

Historia

El desarrollo de MongoDB empezó con la empresa de software 10gen en 2007 cuando estabandesarrollando una plataforma como servicio (PaaS) similar al conocido Google App Engine.5 En 2009MongoDB fue lanzado como un producto independiente y publicado bajo la licencia de código abiertoAGPL.6

En marzo de 2011, se lanzó la versión 1.4 y se consideró ya como una base de datos lista para su uso enproducción.7

Concesión de licencias y soporte

MongoDB se puede obtener de una forma gratuita bajo la licencia pública general de Affero (AGPL) deGNU.8 Los drivers para los lenguajes de programación están bajo la licencia de Apache. Adicional a estaslicencias, 10gen ofrece una licencia comercial para MongoDB.9

Características principales

Lo siguiente es una breve descripción de las características principales de MongoDB:

Consultas Ad hoc

MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las consultaspueden devolver un campo específico del documento pero también puede ser una función JavaScriptdefinida por el usuario.

Indexación

Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índicessecundarios. El concepto de índices en MongoDB es similar a los encontrados en base de datosrelacionales.

Page 3: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

https://es.wikipedia.org/wiki/MongoDB 3/8

Replicación

MongoDB soporta el tipo de replicación maestro­esclavo. El maestro puede ejecutar comandos de lectura yescritura. El esclavo puede copiar los datos del maestro y sólo se puede usar para lectura o para copia deseguridad, pero no se pueden realizar escrituras. El esclavo tiene la habilidad de poder elegir un nuevomaestro en caso de que se caiga el servicio con el maestro actual.

Balanceo de carga

MongoDB se puede escalar de forma horizontal usando el concepto de “shard”.10 El desarrollador elige unallave shard, la cual determina cómo serán distribuidos los datos en una colección. Los datos son divididosen rangos (basado en la llave shard) y distribuidos a través de múltiples shard. Un shard es un maestro conuno o más esclavos. MongoDB tiene la capacidad de ejecutarse en múltiple servidores, balanceando lacarga y/o duplicando los datos para poder mantener el sistema funcionando en caso que exista un fallo dehardware. La configuración automática es fácil de implementar bajo MongoDB y se pueden agregar nuevasmáquinas a MongoDB con el sistema de base de datos corriendo.

Almacenamiento de archivos

MongoDB puede ser utilizado con un sistema de archivos, tomando la ventaja de la capacidad que tieneMongoDB para el balanceo de carga y la replicación de datos utilizando múltiples servidores para elalmacenamiento de archivos. Esta función (que es llamada GridFS11 ) está incluida en los drivers deMongoDB y disponible para los lenguajes de programación que soporta MongoDB. Esta base de datosexpone funciones para la manipulación de archivos y contenido a los desarrolladores. En un sistema conmúltiple servidores, los archivos pueden ser distribuidos y copiados entre los mismos varias veces y de unaforma transparente, de esta forma se crea un sistema eficiente que maneja fallos y balanceo de carga.

Agregación

La función MapReduce puede ser utilizada para el procesamiento por lotes de datos y operaciones deagregación. Esta función permite que los usuarios puedan obtener el tipo de resultado que se obtiene cuandose utiliza el comando SQL “group­by”.

Ejecución de JavaScript del lado del servidor

MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadasdirectamente a la base de datos para ser ejecutadas.

Fragmentacion (Sharding)

Si estas desarrollando un servicio que se va haciendo popular o los niveles de acceso a base de datos soncada vez más altos, empezarás a notar que tu base de datos está siendo martillada por el exceso de tráfico ytu servidor esté sufriendo por los altos niveles de procesamiento continuo y te podrías ver en la necesidadde actualizar tu infraestructura para soportar la demanda.

Page 4: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

https://es.wikipedia.org/wiki/MongoDB 4/8

Aquí entra en juego la fragmentación, es el modo en el que hacemos nuestra base de datos escalable. Enlugar de tener una colección en una base de datos, la pondríamos en varias bases de datos distribuidas, demodo que a la hora de consultar los datos de dicha colección, los recuperemos como si de una única base dedatos se tratase. Mongo se encargará de averiguar de manera transparente en que base de datos seencuentran los datos.

Los fragmentos, estarán formados por replica set, de modo que si creamos tres fragmentos, cada uno de loscuales tiene un replica set con tres servidores, estaríamos hablando de un total de nueve servidores.

Si hacemos consultas, estas se realizarán de manera distribuida a través de un módulo enrutador llamado“MongoS” que mantendrá un pequeño pull de conexiones a los distintos host. Para conocer en quefragmento debe consultar para recuperar datos de una colección ordenada, se utilizan rangos y shard_key,de modo que se trocea la colección en rangos y les asigna un id (shard_key), que puede ser una parte delpropio documento, y se distribuye en los fragmentos (replica set). De modo que cuando se consulte lacolección debemos proporcionar el “shard_key”.

Principales problemas

No implementa las propiedades acid

El no implementar las propiedades acid genera que la base de datos no asegure la durabilidad, la integridad,la consistencia y el aislamiento requeridos obligatoriamente en las transacciones. Es posible que en futurasversiones esto se solucione.

En base a este punto se detallas los cuatro siguientes:

Problemas de consistencia

Las lecturas estrictamente consistentes ven versiones obsoletas de documentos, también pueden devolverdatos incorrectos de lecturas que nunca deberían haber ocurrido.12

Bloqueo a nivel de documento

MongoDB bloquea la base de datos a nivel de documento ante cada operación de escritura. Sólo se podránhacer operaciones de escritura concurrentes entre distintos documentos.

Las escrituras no son durables ni verificables

MongoDB retorna cuando todavía no se ha escrito la información en el espacio de almacenamientopermanente, lo que puede ocasionar pérdidas de información. En MongoDB 2.2 se cambia el valor pordefecto para escribir en al menos una réplica, pero esto sigue sin satisfacer la durabilidad ni laverificabilidad.13

Problemas de escalabilidad

Tiene problemas de rendimiento cuando el volumen de datos supera los 100GB.14

Page 5: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

https://es.wikipedia.org/wiki/MongoDB 5/8

Casos de uso

La base de datos MongoDB es adecuada para los siguientes usos:15

Almacenamiento y registro de eventosPara sistemas de manejo de documentos y contenidoComercio ElectrónicoJuegosProblemas de alto volumen de lecturasAplicaciones móvilesAlmacén de datos operacional de una página WebManejo de contenidoAlmacenamiento de comentarios

VotacionesRegistro de usuariosPerfiles de usuariosSesiones de datosetc.

Proyectos que utilizan metodologías de desarrollo iterativo o ágilesManejo de estadísticas en tiempo real

MongoDB es utilizado para uno o varios de estos casos por varias empresas.16

Manipulación de datos: colecciones y documentos

MongoDB guarda la estructura de los datos en documentos tipo JSON con un esquema dinámico llamadoBSON, lo que implica que no existe un esquema predefinido. Los elementos de los datos se denominandocumentos y se guardan en colecciones. Una colección puede tener un número indeterminado dedocumentos. Comparando con una base de datos relacional, se puede decir que las colecciones son comotablas y los documentos son registros en la tabla. La diferencia es que en una base de datos relacional cadaregistro en una tabla tiene la misma cantidad de campos, mientras que en MongoDB cada documento enuna colección puede tener diferentes campos. En un documento, se pueden agregar, eliminar, modificar orenombrar nuevos campos en cualquier momento,17 ya que no hay un esquema predefinido. La estructurade un documento es simple y compuesta por “key­value pairs” parecido a las matrices asociativas en unlenguaje de programación, esto es debido a que MongoDB sigue el formato de JSON. En MongoDB laclave es el nombre del campo y el valor es su contenido, los cuales se separan mediante el uso de “:”, tal ycomo se puede ver en el siguiente ejemplo. Como valor se pueden usar números, cadenas o datos binarioscomo imágenes o cualquier otro “key­value pairs”.

"_id": ObjectId("4efa8d2b7d284dad101e4bc7"), "Last Name": "PELLERIN", "First Name": "Franck", "Age": 29, "Address": "Street": "1 chemin des Loges", "City": "VERSAILLES"

Page 6: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

https://es.wikipedia.org/wiki/MongoDB 6/8

En este ejemplo se puede ver que en el campo “Address” se contiene otro documento que tiene los camposde “Street” y “City”.

Lenguajes de programación soportados

MongoDB tiene drivers oficiales para los siguientes lenguajes de programación:

CC++C# / .NETErlangHaskellJavaJavaScriptLispNode.jsPerlPHPPythonRubyScala

Instrumentos de MongoDB

Los siguientes comandos pueden ser instalados para el manejo y la administración del sistema de base dedatos:

mongo:18 es un Shell interactivo que permite a los desarrolladores ver, insertar, eliminar y actualizardatos en su base de datos. Este también permite entre otras funciones la replicación de información,configurar los Shards, apagar los servidores y ejecutar JavaScript.mongostat:19 es un instrumento de línea de comandos que muestra en resumen una lista deestadísticas de una instancia de MongoDB en ejecución. Esto te permite visualizar cuantasinserciones, actualizaciones, eliminaciones, consultas y comandos se han ejecutado, pero tambiéncuanta memoria está utilizando y cuanto tiempo ha estado cerrada la base de datos.mongotop:20 es un instrumento de línea de comandos que provee un método para dar seguimiento ala cantidad de tiempo que dura una la lectura o escritura de datos en una instancia. También proveeestadísticas en el nivel de cada colección.mongosniff:21 es un instrumento de línea de comandos que provee un sniffing en la base de datoshaciendo un sniffing en el tráfico de la red que va desde y hacia MongoDB.mongoimport/mongoexport:22 23 es un instrumento de línea de comandos que facilita la importaciónexportación de contenido desde JSON, CSV o TSV. También tiene el potencial de importar oexportar hacia otros formatos.mongodump/mongorestore:24 es un instrumento de línea de comandos para la creación de unaexportación binaria del contenido de la base de datos. Estos comandos son utilizado para la estrategiade copias de seguridad cuando se utiliza MongoDB.

Page 7: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

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

Referencias1. http://db­engines.com/en/ranking2. http://blog.mongodb.org/post/5360007734/mongodb­powering­mtvs­web­properties3. http://blog.mongodb.org/post/5545198613/mongodb­live­at­craigslist4. http://blip.tv/mongodb/mongodb­at­foursquare­37232025. http://www.theregister.co.uk/2011/05/25/the_once_and_future_mongodb/6. http://blog.mongodb.org/post/103832439/the­agpl7. http://blog.mongodb.org/post/472835820/mongodb­1­4­ready­for­production8. http://blog.mongodb.org/post/103832439/the­agpl9. http://www.10gen.com/subscription10. http://www.mongodb.org/display/DOCS/Sharding11. http://www.mongodb.org/display/DOCS/GridFS12. Call me maybe: MongoDB stale reads (https://aphyr.com/posts/322­call­me­maybe­mongodb­stale­reads)13. Broken by Design: MongoDB Fault Tolerance :: Hacking, Distributed

(http://hackingdistributed.com/2013/01/29/mongo­ft/)14. MongoDB mocked after posting “100GB Scaling Checklist” (http://jaxenter.com/mongodb­mocked­after­posting­

100gb­scaling­checklist­48377.html)15. http://www.mongodb.org/display/DOCS/Use+Cases16. http://www.mongodb.org/display/DOCS/Production+Deployments17. http://www.mongodbspain.com/wp­content/uploads/2014/03/MongoDBSpain­CheetSheet.pdf18. http://www.mongodb.org/display/DOCS/mongo+­+The+Interactive+Shell19. http://docs.mongodb.org/manual/reference/mongostat/20. http://docs.mongodb.org/manual/reference/mongotop/21. http://docs.mongodb.org/manual/reference/mongosniff/22. http://docs.mongodb.org/manual/reference/mongoimport/23. http://docs.mongodb.org/manual/reference/mongoexport/24. http://docs.mongodb.org/manual/reference/mongodump/

Bibliografía

Banker, Kyle (28 de marzo de 2011), MongoDB in Action (1st edición), Manning, pp. 375, ISBN9781935182870Chodorow, Kristina; Dirolf, Michael (23 de septiembre de 2010), MongoDB: The Definitive Guide(1st edición), O'Reilly Media, pp. 216, ISBN 9781449381561Pirtle, Mitch (3 de marzo de 2011), MongoDB for Web Development (1st edición), Addison­WesleyProfessional, pp. 360, ISBN 9780321705334Hawkins, Tim; Plugge, Eelco; Membrey, Peter (26 de septiembre de 2010), The Definitive Guide toMongoDB: The NoSQL Database for Cloud and Desktop Computing (1st edición), Apress, pp. 350,ISBN 9781430230519

Enlaces externos

10gen (http://www.10gen.com/)Página oficial (http://www.mongodb.org/)MongoDB con ZanPHP (http://zanphp.com/wiki/Clase_MongoDB)Hoja de referencia rápida de comandos MongoDB (http://www.mongodbspain.com/wp­content/uploads/2014/03/MongoDBSpain­CheetSheet.pdf)MongoDB Spain ­ Comunidad Española sobre MongoDB (http://www.mongodbspain.com/es)

Page 8: MongoDB informcion completa

20/9/2015 MongoDB ­ Wikipedia, la enciclopedia libre

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

Obtenido de «https://es.wikipedia.org/w/index.php?title=MongoDB&oldid=85204675»

Categorías: Bases de datos Código abierto NoSQL

Esta página fue modificada por última vez el 18 sep 2015 a las 16:03.El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; podríanser aplicables cláusulas adicionales. Léanse los términos de uso para más información.Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo delucro.