Está en la página 1de 4

MongoDB

Ir a la navegaciónIr a la búsqueda

Las referencias de este artículo no tienen un formato correcto. Puedes colaborar


editándolas como se indica en esta página. También puedes avisar en su página
de discusión a quien las añadió pegando: {{subst:Aviso formato de
referencias|MongoDB}} ~~~~ Este aviso fue puesto el 16 de diciembre de 2014.

   

MongoDB  

http://www.mongodb.org/  

Información general  

Modelo de desarrollo Código abierto

Desarrollador(es) MongoDB Inc.

Lanzamiento inicial 2009

4.0.8 (info) 29 de marzo de 2019 (3 meses y 6


Última versión estable
días)

4.1.9 (info) 13 de marzo de 2019 (3 meses y 22


Última versión en pruebas
días)

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 (del inglés humongous, "enorme") es un sistema de base de datos NoSQL orientado a
documentos de código abierto.

En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales,
MongoDB guarda estructuras de datos BSON (una especificación similar a JSON) con un esquema
dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.
MongoDB es una base de datos adecuada para su uso en producción y con múltiples
funcionalidades. Esta base de datos se utiliza mucho en la industria,1 contando con
implantaciones en empresas como MTV Network,2 Craiglist,3 BCI o Foursquare.4

El código binario está disponible para los sistemas operativos Windows, GNU/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 Fragmentación (sharding)

5 Principales limitaciones
5.1 No implementa las propiedades ACID multidocumento
5.2 Problemas de consistencia
5.3 Bloqueo a nivel de documento
5.4 Las escrituras no son durables ni verificables
5.5 Problemas de escalabilidad
6 Casos de uso

7 Manipulación de datos: colecciones y documentos


8 Lenguajes de programación soportados

9 Instrumentos de MongoDB
10 Referencias

11 Bibliografía
12 Enlaces externos

Historia
El desarrollo de MongoDB comenzó en 2007 de la mano de 10gen Inc. (ahora llamada MongoDB
Inc.)5 cuando desarrollaban 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 código abierto AGPL.7

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

Concesión de licencias y soporte


MongoDB se puede obtener de forma gratuita bajo la licencia pública general de Affero (AGPL) de
GNU7. Los drivers para los lenguajes de programación están bajo la licencia de Apache. Además
de estas licencias, MongoDB Inc. ofrece una licencia comercial que incluye características
avanzadas (como integración con SASL, LDAP, Kerberos,9 Simple Network Management
Protocol10 y búsqueda de texto de Rosette Linguistics Platform de Basis Technology11),
herramientas de gestión, monitorización y backup, así como soporte.12

Características principales

Consultas ad hoc
MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares. Las
consultas pueden devolver un campo específico del documento pero también puede ser una
función definida por el usuario para su mejor ocupacion.JavaScript

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 al empleado en base
de datos relacionales..

Replicación
MongoDB soporta el tipo de replicación primario-secundario. Cada grupo de primario y sus
secundarios se denomina replica set.13 El primario puede ejecutar comandos de lectura y
escritura. Los secundarios replican los datos del primario y sólo se pueden usar para lectura o
para copia de seguridad, pero no se pueden realizar escrituras. Los secundarios tienen la
habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de
responder.

Balanceo de carga
MongoDB puede escalar de forma horizontal usando el concepto de [shard.14 El desarrollador
elige una clave de sharding, la cual determina cómo serán distribuidos los datos de una
colección. Los datos son divididos en rangos (basado en la clave de sharding) y distribuidos a
través de múltiples shard. Cada shard puede ser una réplica set. MongoDB tiene la capacidad de
ejecutarse en múltiple servidores, balanceando la carga y/o replicando los datos para poder
mantener el sistema funcionando en caso que exista un fallo de hardware. La configuración
automática es fácil de implementar bajo MongoDB y se pueden agregar nuevas servidores a
MongoDB con el sistema de base de datos funcionando.

Almacenamiento de archivos
MongoDB puede ser utilizado como un sistema de archivos, aprovechando la capacidad de
MongoDB para el balanceo de carga y la replicación de datos en múltiples servidores. Esta
funcionalidad, llamada GridFS15 e incluida en la distribución oficial, implementa sobre los
drivers, no sobre el servidor16, una serie de funciones y métodos para manipular archivos y
contenido. En un sistema con múltiple servidores, los archivos pueden ser distribuidos y
replicados entre los mismos de forma transparente, creando así un sistema eficiente tolerante a
fallos y con balanceo de carga.

Agregación
MongoDB proporciona un framework de agregación que permite realizar operaciones similares
al "GROUP BY" de SQL. El framework de agregación está construido como un pipeline en el que
los datos van pasando a través de diferentes etapas en los cuales estos datos son modificados,
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, MongoDB
proporciona una función MapReduce que puede ser utilizada para el procesamiento por lotes de
datos y operaciones de agregación.

Ejecución de JavaScript del lado del servidor


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

Fragmentación (sharding)
Si estás desarrollando un servicio que se va haciendo popular o los niveles de acceso a base de
datos son cada vez más altos, empezarás a notar que tu base de datos está siendo atacada por
un tráfico creciente y tu servidor esté sufriendo por los altos niveles de stress y te podrías ver en
la necesidad de actualizar tu infraestructura para soportar la demanda.

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

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

Las consultas se realizan de manera distribuida a través de un módulo enrutador, “MongoS”, que
mantiene un pool de conexiones a los distintos hosts. Para distribuir los datos de una colección
ordenada, se trocea la colección en rangos a los que se les asigna un identificador (shard key),
que puede ser una parte del propio documento, y se distribuye entre los replica sets.

También podría gustarte