![]() | |
![]() | |
Desarrollador (es) | MongoDB Inc. |
---|---|
Versión inicial | 11 de febrero de 2009 ; Hace 12 años ( 2009-02-11) |
Lanzamiento estable | 5.0 ![]() |
Repositorio | |
Escrito en | C ++, JavaScript, Python |
Sistema operativo | Windows Vista y posterior, Linux, OS X 10.7 y posterior, Solaris, FreeBSD |
Disponible en | inglés |
Escribe | Base de datos orientada a documentos |
Licencia | Licencia pública del lado del servidor |
Sitio web | www.mongodb.com ![]() |
MongoDB es un programa de base de datos orientado a documentos multiplataforma disponible en origen. Clasificado como un programa de base de datos NoSQL, MongoDB utiliza documentos similares a JSON con esquemas opcionales. MongoDB es desarrollado por MongoDB Inc. y tiene licencia de Server Side Public License (SSPL).
La compañía de software 10gen comenzó a desarrollar MongoDB en 2007 como un componente de una plataforma planificada como un producto de servicio. En 2009, la compañía cambió a un modelo de desarrollo de código abierto, y la compañía ofreció soporte comercial y otros servicios. En 2013, 10gen cambió su nombre a MongoDB Inc.
El 20 de octubre de 2017, MongoDB se convirtió en una empresa que cotiza en bolsa, que cotiza en NASDAQ como MDB con un precio de oferta pública inicial de $ 24 por acción.
MongoDB es una empresa global con sede en EE. UU. En la ciudad de Nueva York y sede internacional en Dublín.
El 30 de octubre de 2019, MongoDB se asoció con Alibaba Cloud, quien ofrecerá a sus clientes una solución MongoDB como servicio. Los clientes pueden utilizar la oferta gestionada de los centros de datos globales de BABA.
Versión | Fecha de lanzamiento | Notas de funciones | Refs |
---|---|---|---|
1.0 | Febrero de 2009 | ||
1.2 | Diciembre de 2009 |
| |
1.4 | Marzo de 2010 | ||
1,6 | Agosto de 2010 |
| |
1.8 | Marzo de 2011 | ||
2.0 | Septiembre de 2011 | ||
2.2 | Agosto 2012 | ||
2.4 | Marzo de 2013 |
| |
2.6 | 8 de abril de 2014 |
| |
3,0 | 3 de marzo de 2015 |
| |
3.2 | 8 de diciembre de 2015 |
| |
3.4 | 29 de noviembre de 2016 |
| |
3.6 | Noviembre de 2017 | ||
4.0 | Junio de 2018 |
| |
4.2 | Agosto de 2019 | ||
4.4 | Julio de 2020 | ||
4.4.5 | Abril de 2021 | ||
4.4.6 | Mayo de 2021 | ||
5,0 | 13 de julio de 2021 |
|
MongoDB admite búsquedas de campo, de rango y de expresión regular. Las consultas pueden devolver campos específicos de documentos y también incluir funciones de JavaScript definidas por el usuario. Las consultas también se pueden configurar para devolver una muestra aleatoria de resultados de un tamaño determinado.
Los campos de un documento de MongoDB se pueden indexar con índices o índices primarios y secundarios.
MongoDB proporciona alta disponibilidad con conjuntos de réplicas. Un conjunto de réplicas consta de dos o más copias de los datos. Cada miembro del conjunto de réplicas puede actuar como réplica principal o secundaria en cualquier momento. Todas las escrituras y lecturas se realizan en la réplica principal de forma predeterminada. Las réplicas secundarias mantienen una copia de los datos de la principal mediante la replicación incorporada. Cuando falla una réplica principal, el conjunto de réplicas realiza automáticamente un proceso de elección para determinar qué secundaria debe convertirse en principal. Los secundarios pueden servir opcionalmente operaciones de lectura, pero esos datos solo eventualmente son consistentes de manera predeterminada.
Si la implementación de MongoDB replicada solo tiene un miembro secundario, se debe agregar al conjunto un demonio separado llamado árbitro. Tiene una única responsabilidad, que es resolver la elección de las nuevas primarias. Como consecuencia, una implementación de MongoDB distribuida idealizada requiere al menos tres servidores separados, incluso en el caso de solo uno primario y uno secundario.
MongoDB escala horizontalmente usando fragmentación. El usuario elige una clave de fragmentación, que determina cómo se distribuirán los datos de una colección. Los datos se dividen en rangos (según la clave del fragmento) y se distribuyen en varios fragmentos. (Un fragmento es un maestro con una o más réplicas). Alternativamente, la clave del fragmento se puede aplicar hash para asignar a un fragmento, lo que permite una distribución uniforme de los datos.
MongoDB puede ejecutarse en varios servidores, equilibrando la carga o duplicando datos para mantener el sistema en funcionamiento en caso de falla del hardware.
MongoDB se puede utilizar como un sistema de archivos, llamado GridFS, con funciones de equilibrio de carga y replicación de datos en varias máquinas para almacenar archivos.
Esta función, llamada sistema de archivos de cuadrícula, se incluye con los controladores MongoDB. MongoDB expone funciones para la manipulación de archivos y contenido a los desarrolladores. Se puede acceder a GridFS utilizando la utilidad mongofiles o complementos para Nginx y lighttpd. GridFS divide un archivo en partes, o fragmentos, y almacena cada uno de esos fragmentos como un documento separado.
MongoDB proporciona tres formas de realizar la agregación: la canalización de agregación, la función de reducción de mapa y los métodos de agregación de propósito único.
Map-reduce se puede utilizar para el procesamiento por lotes de datos y operaciones de agregación. Pero según la documentación de MongoDB, Aggregation Pipeline proporciona un mejor rendimiento para la mayoría de las operaciones de agregación.
El marco de la agregación permite a los usuarios obtener el tipo de resultados para los que el SQL se utiliza la cláusula GROUP BY. Los operadores de agregación se pueden unir para formar una tubería, análoga a las tuberías Unix. El marco de agregación incluye el operador $ lookup que puede unir documentos de múltiples colecciones, así como operadores estadísticos como la desviación estándar.
JavaScript se puede utilizar en consultas, funciones de agregación (como MapReduce ) y enviar directamente a la base de datos para su ejecución.
MongoDB admite colecciones de tamaño fijo llamadas colecciones limitadas. Este tipo de colección mantiene el orden de inserción y, una vez alcanzado el tamaño especificado, se comporta como una cola circular.
MongoDB afirma admitir transacciones ACID de varios documentos desde la versión 4.0 en junio de 2018. Se descubrió que esta afirmación no es cierta ya que MongoDB viola el aislamiento de instantáneas.
MongoDB Community Edition es gratuita y está disponible para Windows, Linux y OS X.
MongoDB Enterprise Server es la edición comercial de MongoDB, disponible como parte de la suscripción de MongoDB Enterprise Advanced.
MongoDB también está disponible como un servicio totalmente administrado bajo demanda. MongoDB Atlas se ejecuta en AWS, Microsoft Azure y Google Cloud Platform.
MongoDB tiene controladores oficiales para los principales lenguajes de programación y entornos de desarrollo. También hay una gran cantidad de controladores no oficiales o admitidos por la comunidad para otros lenguajes de programación y marcos.
La interfaz principal de la base de datos ha sido el shell mongo. Desde MongoDB 3.2, MongoDB Compass se introduce como la GUI nativa. Existen productos y proyectos de terceros que ofrecen interfaces de usuario para la administración y visualización de datos.
A partir de octubre de 2018, MongoDB se lanza bajo la Licencia pública del lado del servidor (SSPL), una licencia desarrollada por el proyecto. Reemplaza la GNU Affero General Public License y es casi idéntica a la GNU General Public License versión 3, pero requiere que aquellos que hacen que el software esté disponible públicamente como parte de un "servicio" deben hacer que todo el código fuente del servicio esté disponible bajo esta licencia. El SSPL se envió para su certificación a la Open Source Initiative, pero luego se retiró. Los controladores de idioma están disponibles bajo una licencia Apache. Además, MongoDB Inc. ofrece licencias propietarias para MongoDB. Las últimas versiones con licencia como AGPL versión 3 son 4.0.3 (estable) y 4.1.4.
MongoDB se ha eliminado de las distribuciones Debian, Fedora y Red Hat Enterprise Linux debido al cambio de licencia. Fedora determinó que la versión 1 de SSPL no es una licencia de software libre porque está "diseñada intencionalmente para ser agresivamente discriminatoria" hacia los usuarios comerciales.
Debido a la configuración de seguridad predeterminada de MongoDB, que permite que cualquier persona tenga acceso completo a la base de datos, se han robado datos de decenas de miles de instalaciones de MongoDB. Además, se han retenido muchos servidores de MongoDB para pedir un rescate.
En septiembre de 2017; actualizado en enero de 2018, en una respuesta oficial, Davi Ottenheimer, líder de seguridad de productos en MongoDB, proclamó que MongoDB ha tomado medidas para defenderse de estos riesgos.
A partir de la versión 2.6 de MongoDB en adelante, los binarios de los paquetes oficiales RPM y DEB de MongoDB se vinculan a localhost de forma predeterminada. Desde MongoDB 3.6, este comportamiento predeterminado se extendió a todos los paquetes de MongoDB en todas las plataformas. Como resultado, se denegarán todas las conexiones en red a la base de datos a menos que un administrador las configure explícitamente.
En algunos escenarios de falla en los que una aplicación puede acceder a dos procesos de MongoDB distintos, pero estos procesos no pueden acceder entre sí, es posible que MongoDB devuelva lecturas obsoletas. En este escenario, también es posible que MongoDB deshaga las escrituras que se han reconocido. Este problema se solucionó desde que se lanzó la versión 3.4.0 en noviembre de 2016 (y se actualizó a la v3.2.12).
Antes de la versión 2.2, los bloqueos se implementaban en un proceso por servidor. Con la versión 2.2, los bloqueos se implementaron a nivel de base de datos. Desde la versión 3.0, se introdujeron motores de almacenamiento conectables y cada motor de almacenamiento puede implementar bloqueos de manera diferente. Con MongoDB 3.0, los bloqueos se implementan a nivel de recopilación para el motor de almacenamiento MMAPv1, mientras que el motor de almacenamiento WiredTiger utiliza un protocolo de simultaneidad optimista que proporciona un bloqueo a nivel de documento de manera eficaz. Incluso con versiones anteriores a la 3.0, un enfoque para aumentar la simultaneidad es usar fragmentación. En algunas situaciones, las lecturas y escrituras producirán sus bloqueos. Si MongoDB predice que es poco probable que una página esté en la memoria, las operaciones cederán su bloqueo mientras se cargan las páginas. El uso de ceder cerradura se expandió enormemente en 2.2.
Hasta la versión 3.3.11, MongoDB no podía realizar una ordenación basada en la intercalación y se limitaba a la comparación de bytes a través de memcmp, que no proporcionaba una ordenación correcta para muchos idiomas distintos del inglés cuando se usaba con una codificación Unicode. El problema se solucionó el 23 de agosto de 2016.
Antes de MongoDB 4.0, las consultas en un índice no eran atómicas. Es posible que se pierdan los documentos que se estaban actualizando mientras se ejecutaba la consulta. La introducción del problema de lectura de instantáneas en MongoDB 4.0 eliminó este fenómeno.
Aunque MongoDB afirma en un artículo sin fecha titulado "MongoDB y Jepsen" que su base de datos pasó las pruebas de la empresa de investigación de seguridad de sistemas distribuidos Jepsen, que denominó "las pruebas de seguridad, corrección y consistencia de datos más exigentes de la industria", Jepsen publicó un artículo en mayo de 2020 indicando que MongoDB 3.6.4 de hecho había fallado en sus pruebas, y que el MongoDB 4.2.6 más nuevo tiene más problemas, incluidas las “transacciones retrocausales” en las que una transacción invierte el orden para que una lectura pueda ver el resultado de una escritura futura. Jepsen señaló en su informe que MongoDB omitió cualquier mención de estos hallazgos en la página "MongoDB y Jepsen" de MongoDB.
MongoDB Inc. organiza una conferencia anual de desarrolladores a la que se ha hecho referencia como MongoDB World o MongoDB.live.
Año | fechas | Ciudad | Sede | Notas |
---|---|---|---|---|
2014 | 23-25 de junio | Nueva York | Hotel Sheraton Times Square | |
2015 | 1 a 2 de junio | Nueva York | Hotel Sheraton Times Square | |
2016 | 28 al 29 de junio | Nueva York | Nueva York Hilton Midtown | |
2017 | 20-21 de junio | Chicago | Hyatt Regency Chicago | Primer año no en la ciudad de Nueva York |
2018 | 26-27 de junio | Nueva York | Nueva York Hilton Midtown | |
2019 | 17-19 de junio | Nueva York | Nueva York Hilton Midtown | |
2020 | 4 al 6 de mayo | En línea | Evento en persona cancelado y conferencia realizada completamente en línea debido a la pandemia COVID-19 | |
2021 | 13-14 de julio | En línea | Conferencia realizada en línea debido a la pandemia COVID-19 | |
2022 | 7 a 9 de junio | Nueva York |