Diferencia entre revisiones de «MongoDB»
Sin resumen de edición |
Sin resumen de edición |
||
Línea 13: | Línea 13: | ||
| lenguaje_programación = [[C++]] |
| lenguaje_programación = [[C++]] |
||
}} |
}} |
||
'''MongoDB''' (de la palabra en ingles “hu'''mongo'''us” que significa enorme) es un sistema de [[Base_de_datos|base de datos]] [[NoSQL]] orientado a documentos desarrollado bajo el concepto de [[código abierto]]. |
'''MongoDB''' (de la palabra en ingles “hu'''mongo'''us” que significa enorme) es un sistema de [[Base_de_datos|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 ves de guardar la data en tablas como se hace en las base de datos relacionales, MongoDB guarda estructura de data en documentos tipo [[JSON]] con un esquema dinámico (MongoDB llama ese formato [[BSON]]), haciendo que la integración de la data en ciertas aplicaciones sea mas fácil y rápida. |
MongoDB forma parte de la nueva familia de sistemas de base de datos NoSQL. En ves de guardar la data en tablas como se hace en las base de datos relacionales, MongoDB guarda estructura de data en documentos tipo [[JSON]] con un esquema dinámico (MongoDB llama ese formato [[BSON]]), haciendo que la integración de la data en ciertas aplicaciones sea mas fácil y rápida. |
Revisión del 05:34 9 may 2012
General info | ||
---|---|---|
Archivo:PoweredMongoDBbrown66.png | ||
Información general | ||
Tipo de programa | NoSQL | |
Desarrollador | 10gen | |
Modelo de desarrollo | Codigo abierto | |
Lanzamiento inicial | 2009 | |
Licencia | GNU AGPL v3.0 (drivers: licencia Apache) | |
Información técnica | ||
Programado en | C++ | |
Versiones | ||
Última versión estable | 2.0.4 ( 20 de marzo de 2012 (12 años, 9 meses y 22 días)) | |
Última versión en pruebas | 4.3.03 de junio de 2019 | |
Enlaces | ||
MongoDB (de la palabra en ingles “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 ves de guardar la data en tablas como se hace en las base de datos relacionales, MongoDB guarda estructura de data en documentos tipo JSON con un esquema dinámico (MongoDB llama ese formato BSON), haciendo que la integración de la data en ciertas aplicaciones sea mas fácil y rápida.
El desarrollo de MongoDB empezó en octubre de 2007 por la compañía de software 10gen. Ahora MongoDB es una base de datos lista para la producción de uso y con muchas características (feature). Esta base de datos es altamente utilizada en las industries y MTV Network[1], Craiglist[2] y Foursquare[3] son algunas de las empresas que utilizan esta base de datos.
El código binario esta disponible para los sistemas operativos de Windows, Linux, OS X y Solaris.
Historia
El desarrollo de MongoDB empezó con la empresa de software 10gen en el 2007, cuando ellos estaban desarrollando una plataforma como servicio (PAAS) similar al conocido Google App Engine[4]. En el 2009 MongoDB fue lanzado como un producto independiente y se le otorgo la licencia de código abierto AGPL[5].
En marzo de 2011, la versión 1.4 fue lanzada y se considero ya como una base de datos lista para su uso de producción[6].
Concesión de licencias y soporte
MongoDB se puede obtener de una forma gratuita bajo la licencia pública general de Affero (AGPL) de GNU[7]. Los drivers para los lenguajes de programación están bajo la licencia de Apache. Adicional a estas licencias, 10gen ofrece una licencia comercial para MongoDB[8].
Características principales
Lo siguiente es una breve descripción de las características principales de MongoDB:
Consultas Ad hoc
MongoDB soportal la búsqueda por campos, consultas de rangos y expresiones regulares. Las consultas pueden retornar un campo específico del documento pero también puede ser una función JavaScript definida por un usuario.
Indexación
Cualquier campo en un documento de MongoDB puede ser indexado al igual que es posible hacer índices secundarios. El concepto de índices en MongoDB es similar a esos encontrados en base de datos relacionales.
Replicación
MongoDB suporta el tipo de replicación maestro-esclavo. El maestro puede ejecutar comandos de lectura y escritura. El esclavo puede copiar la data del maestro y solo se puede usar para lectura o para copia de seguridad, pero la escritura no se puede ejecutar. El esclavo tiene la habilidad de poder elegir un nuevo maestro en caso del que se caiga el servicio con el maestro actual.
Balance de carga
MongoDB se puede escalara de forma horizontal usando el concepto de “shard”[9]. El desarrollador elije una llave shard, la cual determina como la data en una colección será distribuida. La data es dividida en rangos (basado en la llave shard) y distribuida a través de múltiples shard. Un shard es un maestro con uno o más esclavos. MongoDB tienes la capacidad de correr en múltiple servidores, balanceando la carga y/o duplicando la data para poder mantener el sistema trabajando en caso que exista una falla de hardware. La configuración automática es fácil de implementar bajo MongoDB y nuevas maquinas pueden ser agregadas 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 tiene MongoDB para el balanceo de carga y la replicación de data utilizando múltiples servidores para el almacenamiento de archivos. Esta función (que es llamada GridFS[10]) es incluida en los drivers de MongoDB y disponible para los lenguajes de programación que soporta MongoDB. Esta base de datos expone funciones para la manipulación de archivos y contenido a los desarrolladores. En un sistema con multiple servidores, los archivos pueden ser distribuidos y copiados varias veces entre servidores de una forma transparente, de esta forma creado un sistema eficiente que maneja fallas y balanceo de carga.
Agregación
La función MapReduce puede ser utilizada para el procesamiento por lotes de data y operaciones de agregación. Esta función permite que los usuarios puedan obtener el tipo de resultad que se obtine cuando se utiliza el comando SQL “group-by”.
Ejecución de JavaScript del lado del servidor
MongoDB tiene la capacidad de hacer consultas utilizando JavaScript, haciendo que esto sea enviado directo a la base de datos para ser ejecutados.
Casos de uso
La base de datos MongoDB es adecuada para los siguientes usos[11]:
- Almacenamiento y registro de eventos
- Para sistemas de manejo de documentos y contenido
- Comercio Electrónico
- Juegos
- Problemas de alto volumen
- Aplicaciones móviles
- Almacén de datos operacional de una pagina Web
- Manejo de contenido
- Almacenamiento de comentarios
- Votaciones
- Registro de usarios
- Perfiles de usuarios
- Sesiones de data
- etc.
- Proyectos que utilizan metodologías de desarrollo iterativo o agiles
- Manejo de estadísticas en tiempo real
MongoDB es utilizado para una o vario de estos casos por varias empresas[12].
Manipulación de la data: colecciones y documentos
MongoDB guarda la estructura de la data en documentos tipo JSON con un esquema dinámico llamado BSON, implicando que no tiene un esquema predefinido. Los elementos de la data son llamados documentos y son guardados en colecciones. Una colección puede tener un sinnúmero de documentos. Comparando con una base de datos relacional, se puede decir que las colecciones son como tablas y los documentos son archivos. La diferencia es que en una base de datos relacional cada archivo en una tabla tiene la misma cantidad de campos, mientras que en MongoDB cada documento en una colección puede tener diferentes campos. En un documento, nuevo campos pueden ser agregados, eliminados, modificados o renombrados en cualquier momento, ya que no hay un esquema predefinido. La estructura de un documento es simple y compuesta por “key-value pairs” parecido a las matrices associativas en un lenguaje de programación, esto es debido a que MongoDB sigue el formato de JSON. En MongoDB la llave es el nombre del campo y el valor es su contenido, el cual es separado por “:”, esto se puede ver en el siguiente ejemplo. Como valor se puede usar números, cadenas o data dinaria como 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"
}
}
En este ejemplo se puede ver que en el campo “Address” se contiene otro documento que tiene los campos de “Street” y “City”.
Lenguaje de programación soportado
MongoDB tiene drivers oficiales para los siguientes lenguajes
Instrumentos de MongoDB
Los siguientes comandos pueden ser instalados para el manejo y la administración del sistema de base de datos:
- mongo[13]: es un Shell interactivo que permite a los desarrolladores ver, insertar, eliminar y actualizar data en su base de datos. Este también permite entre otras funciones la replicación de información, configurar los Shards, apagarlos servidores y ejecutar JavaScript.
- mongostat[14]: es un instrumento de comando de línea que muestra en resumen una lista de estadísticas de una instancia de MongoDB que este corriendo. Esto te permite visualizar cuantos insertos, actualizaciones, eliminaciones, consultas y comando se han ejecutados, pero también cuanta memoria esta utilizando y que tiempo la base de datos ha estado cerrada.
- mongotop[15]: es un instrumento de comando de línea que provee un método para dar seguimiento a la cantidad de tiempo que una instancia dura en la lectura o escritura de data. También provee estadísticas en el nivel de cada colección.
- mongosniff[16]: es un instrumento de comando de línea que provee un sniffing en la base de datos haciendo un sniffing en el tráfico de la red que va desde y hacia MongoDB.
- mongoimport/mongoexport[17][18]: es comando de línea que facilita la importación exportación de contenido desde JSON, CSV o TSV. Tambien tiene el potencial de importar o exportar hacia otros formatos.
- mongodump/mongorestore[19]: es comando de línea para la creación de una exportación binaria del contenido de la base de datos. Estos comando son utilizado para la estrategia de copias de seguridad de cuando se utiliza MongoDB.
Referencias
- ↑ http://blog.mongodb.org/post/5360007734/mongodb-powering-mtvs-web-properties
- ↑ http://blog.mongodb.org/post/5545198613/mongodb-live-at-craigslist
- ↑ http://blip.tv/mongodb/mongodb-at-foursquare-3723202
- ↑ http://www.theregister.co.uk/2011/05/25/the_once_and_future_mongodb/
- ↑ http://blog.mongodb.org/post/103832439/the-agpl
- ↑ http://blog.mongodb.org/post/472835820/mongodb-1-4-ready-for-production
- ↑ http://blog.mongodb.org/post/103832439/the-agpl
- ↑ http://www.10gen.com/subscription
- ↑ http://www.mongodb.org/display/DOCS/Sharding
- ↑ http://www.mongodb.org/display/DOCS/GridFS
- ↑ http://www.mongodb.org/display/DOCS/Use+Cases
- ↑ http://www.mongodb.org/display/DOCS/Production+Deployments
- ↑ http://www.mongodb.org/display/DOCS/mongo+-+The+Interactive+Shell
- ↑ http://docs.mongodb.org/manual/reference/mongostat/
- ↑ http://docs.mongodb.org/manual/reference/mongotop/
- ↑ http://docs.mongodb.org/manual/reference/mongosniff/
- ↑ http://docs.mongodb.org/manual/reference/mongoimport/
- ↑ http://docs.mongodb.org/manual/reference/mongoexport/
- ↑ http://docs.mongodb.org/manual/reference/mongodump/
Bibliografía
- Banker, Kyle (March 28, 2011), MongoDB in Action (1st edición), Manning, p. 375, ISBN 9781935182870.
- Chodorow, Kristina; Dirolf, Michael (September 23, 2010), MongoDB: The Definitive Guide (1st edición), O'Reilly Media, p. 216, ISBN 9781449381561.
- Pirtle, Mitch (March 3, 2011), MongoDB for Web Development (1st edición), Addison-Wesley Professional, p. 360, ISBN 9780321705334.
- Hawkins, Tim; Plugge, Eelco; Membrey, Peter (September 26, 2010), The Definitive Guide to MongoDB: The NoSQL Database for Cloud and Desktop Computing (1st edición), Apress, p. 350, ISBN 9781430230519.