sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Qué es MongoDB y cómo funciona?

MongoDB es la base de datos NoSQL más común y ampliamente utilizada. Es una base de datos orientada a documentos de código abierto. NoSQL se usa para referirse a "no relacional". Esto significa que la base de datos MongoDB no se basa en relaciones tabulares como RDBMS, ya que proporciona un mecanismo distinto de almacenamiento y recuperación de datos.

El formato de almacenamiento empleado por MongoDB se conoce como BSON. La base de datos es mantenida por MongoDB Inc. y tiene licencia bajo la Licencia pública del lado del servidor (SSPL).

A continuación se muestra una estructura de documento MongoDB simple:

{
  title: 'FossLinux',
  by: 'Abraham',
  url: 'https://www.fosslinux.com',
  type: 'NoSQL'
}

¿Cómo funciona?

MongoDB funciona en dos capas, a saber:

  • Capa de datos
  • Capa de aplicación

La capa de aplicación se conoce comúnmente como una capa de abstracción final. Contiene dos partes:el backend, la parte del servidor y el front-end la sección de interfaz de usuario. La sección frontend es el lugar visible donde el desarrollador, con la ayuda de MongoDB, interactúa con el móvil o la web. La sección de back-end incluye el servidor que se utiliza principalmente para llevar a cabo la lógica del lado del servidor. Además, la sección del servidor contiene controladores y el shell mongo que ayudan a la interacción del servidor MongoDB mediante consultas.

Las consultas se envían al servidor que se encuentra en la capa de datos. El servidor MongoDB recibe y luego pasa las consultas al motor de almacenamiento, donde se realizan las operaciones de lectura y escritura en los archivos de datos correspondientes. El objetivo principal del motor de almacenamiento es administrar datos.

Nota: El servidor MongoDB no realiza operaciones de lectura y escritura.

La siguiente imagen ilustra cómo funciona MongoDB:

Características principales de MongoDB

Sus características principales incluyen:

1. Indexación

Los índices están destinados a mejorar el rendimiento y la velocidad de búsqueda de la base de datos. Los campos en el documento de esta base de datos se pueden indexar con índices primarios y secundarios. Sin indexación, cada documento en una base de datos debe escanearse para seleccionar los que coinciden con la consulta, lo que en ocasiones tiende a ser ineficiente. Por lo tanto, la indexación debe estar presente para la búsqueda eficiente de documentos, y MongoDB la usa para procesar grandes extensiones de datos de manera concisa.

MongoDB permite a sus usuarios indexar cualquier campo que haya sido indexado con los índices primario y secundario. Esto hace que las búsquedas de consultas sean mucho más rápidas, lo que mejora el rendimiento general.

2. Equilibrio de carga

MongoDB duplica los datos para mantener el sistema en funcionamiento incluso en casos de falla del hardware. Además, este proceso permite que MongoDB se ejecute en varios servidores y, por lo tanto, equilibre la carga.

3. Consultas ad-hoc

MongoDB admite búsquedas regulares de campo, consulta de rango y expresión. Estas consultas devuelven campos específicos de documentos y también incluyen 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.

4. Replicación

Los conjuntos de réplicas que ofrece MongoDB constan de dos o más copias de datos. Estos conjuntos pueden actuar como réplicas primarias o secundarias en cualquier momento. Los conjuntos de réplicas principales realizan la lectura y escritura, mientras que los conjuntos secundarios mantienen una copia de los datos de la réplica principal mediante la replicación integrada. Si la réplica principal falla, el conjunto de réplicas realiza automáticamente un proceso de elección para determinar qué secundaria debe convertirse en principal. Las réplicas secundarias pueden realizar operaciones de lectura opcionalmente, pero los datos finalmente son coherentes de forma predeterminada.

5. Almacenamiento de archivos

Esta base de datos expone funciones para la manipulación de archivos y contenido para los desarrolladores. Mongo DB se puede utilizar como un sistema de archivos conocido como sistema de archivos Grid (GridFS). Esta función divide un archivo en partes y almacena cada parte como un documento separado.

6. Agregación

Para una usabilidad eficiente, MongoDB proporciona el marco de agregación. Esta función permite a los desarrolladores agrupar los datos del proceso y obtener un único resultado incluso después de ejecutar diferentes operaciones en los datos del grupo. Hay tres formas en que MongoDB proporciona el marco de agregación:

  • Función de reducción de mapa
  • Canalización de agregación
  • Agregación de propósito único.

Consulte la imagen a continuación para obtener una idea de cómo funciona la agregación en MongoDB:

7. Base de datos sin esquema

La función sin esquema proporciona a MongoDB mucha más flexibilidad. Una colección puede contener diferentes documentos en MongoDB. El hecho de que no tiene esquema le permite almacenar documentos separados con otros contenidos, campos y tamaños en la misma colección.

8. GridFS

Esta es una función utilizada para almacenar y recuperar archivos en MongoDB. Divide un documento en varias partes conocidas como fragmentos y luego los guarda en diferentes documentos. Todos los fragmentos, excepto el último, tienen un tamaño de almacenamiento predeterminado de aproximadamente 255 KB. GridFS es muy útil para archivos de más de 16 MB.

Nota: Cuando se consulta GridFS por un archivo, ensambla todos los fragmentos separados necesarios para formar el archivo original. A continuación se muestra una metodología de trabajo simplificada de GridFS:

Componentes MongoDB

Los componentes principales de MongoDB y su uso incluyen:

  1. Colecciones: Son un conjunto de documentos MongoDB. Sus contrapartes RDBMS son tablas. Es esencial comprender que las colecciones no imponen ninguna estructura. Una colección siempre existe dentro de una sola base de datos.
  2. Documento – Esta es una colección de datos almacenados en formato BSON. Su contraparte RDBMS es Row. Los registros en MongoDB se conocen como Documentos. Los documentos en MongoDB contienen nombres de campo y sus valores correspondientes.
  3. Campo: Este es un elemento único en un documento MongoDB que contiene valores como campos y pares de valores. En las bases de datos relacionales, los campos son análogos a las columnas. Se puede hacer referencia a un campo como un par de nombre-valor en un documento en términos simples.
  4. _id – Cada documento MongoDB requiere este campo. El campo _id se puede equiparar a la clave principal en las bases de datos relacionales. Representa una instancia o valor único en un documento MongoDB. Si crea intencionalmente un documento en MongoDB sin el campo _id, se generará automáticamente.
  5. Cursores: Este es un puntero que indica el conjunto de resultados de una consulta. Con la ayuda del cursor, los clientes pueden recuperar resultados.
  6. JSON: Esta es una notación JavaScript. Es texto sin formato, un formato legible por humanos que se utiliza para expresar datos estructurados. Miles de lenguajes de programación admiten JSON.
  7. Base de datos: Al igual que en RDBMS, donde una base de datos es un contenedor de tablas, en MongoDB, una base de datos es un contenedor de colecciones. Cada base de datos contiene sus propios conjuntos de archivos en el sistema de archivos. Por lo tanto, los servidores MongoDB pueden almacenar más de una base de datos.

Ediciones de MongoDB

MongoDB ha sido lanzado en varias ediciones, las cuales son;

  • Servidor de la comunidad MongoDB:  Esta es una versión de código abierto de MongoDB que está disponible gratuitamente para usuarios de Linux, Windows y macOS.
  • Servidor MongoDB Enterprise:  Esta es la versión comercial de MongoDB y se puede encontrar como parte del paquete de suscripción de MongoDB Enterprise Advanced.
  • MongoDB Atlas – Comúnmente conocido como MongoDB Cloud. MongoDB Atlas es un paquete de MongoDB bajo demanda que se ejecuta y administra por completo en las plataformas Microsoft Azure, Google Cloud y AWS. Es una versión de MongoDB Enterprise alojada en la nube. La edición Atlas contiene todas las características del servidor MongoDB Enterprise y mucho más. Esto, por lo tanto, implica que MongoDB Atlas es mucho más avanzado que todas las demás ediciones de MongoDB.

¿Por qué debería uno usar MongoDB?

  1. Una base de datos relacional contiene datos estructurados, pero ¿qué pasa con los datos no estructurados? El usuario aún puede agregar varias formas de datos aleatorios a MongoDB sin siquiera declarar sus tipos.
  2. El usuario puede cargar un volumen masivo de datos con un método de fragmentación incorporado, que separa los datos y los distribuye convenientemente entre numerosos servidores, gracias a la disponibilidad y flexibilidad de MongoDB en un entorno basado en la nube.
  3. El esquema dinámico de MongoDB permite a los usuarios experimentar y aprender cosas nuevas rápidamente. Cualquier cosa se puede incorporar a MongoDB de forma rápida y económica.
  4. Facilita la recopilación de datos basados ​​en la ubicación sin necesidad de procedimientos sofisticados.
  5. Millones de dispositivos vinculados generan datos regularmente en Internet, lo que dificulta su extracción y procesamiento, pero MongoDB puede hacerlo dentro de una única base de datos.
  6. MongoDB puede contener una amplia gama de datos de varias fuentes para potenciar un sitio web basado en CMS. Esta información incluye tweets, comentarios, mensajes multimedia y otros tipos de información.
  7. Es un excelente compañero para el desarrollo de aplicaciones móviles.
  8. Puede proporcionar a los usuarios análisis de clientes en tiempo real, brindando una experiencia personalizada muy necesaria.
  9. Es una base de datos de bajo costo. Si tiene una microempresa o una pequeña empresa, MongoDB es una mejor opción de almacenamiento porque es fácil de administrar y configurar.
  10. El poderoso motor de búsqueda en MongoDB le permitirá al usuario saber de dónde provienen los datos.

Pros y contras de MongoDB

Ventajas

  1. MongoDB es muy superior a las bases de datos relacionales si uno tiene una cantidad significativa de datos y desea distribuirlos entre numerosos servidores para equilibrar la carga.
  2. Las consultas de búsqueda en MongoDB son más rápidas ya que deben interpretarse en un solo servidor para acceder.
  3. Ofrece versatilidad, lo que implica que deberían utilizar MongoDB para almacenar datos no estructurados porque es una forma mucho más fácil de hacerlo.

Desventajas

  1. En MongoDB, no hay forma de combinar tablas; por lo tanto, tendrá que hacerlo manualmente cada vez que necesite usar esta función, lo que resultará en una codificación antiestética y que consumirá mucho tiempo.
  2. Usa mucha memoria ya que tiene que almacenar la clave para cada documento porque existe la posibilidad de que haya datos en conflicto.
  3. Cuando comienza a usar una función, bloquea toda la base de datos, lo que provoca un problema de concurrencia.
  4. No hace esto automáticamente; por lo tanto, el usuario debe asegurarse manualmente de que la operación sea una transacción.

Las 10 preguntas más frecuentes de MongoDB

Esta sección proporcionará respuestas a algunas de las preguntas más frecuentes sobre MongoDB. Puede consultarlo ya que la mayoría de las preguntas comunes ya han sido respondidas, y es posible que tenga suerte si encuentra una solución a su problema aquí.

1. ¿Cómo puedo aprender MongoDB?

La forma más fácil y común de aprender MongoDB es a través de los cursos de capacitación en línea que ofrece MongoDB para desarrolladores. Los cursos son desarrollados e impartidos por ingenieros expertos de MongoDB que están bien familiarizados con MongoDB. Los cursos son gratuitos y cubren todos los aspectos que necesita saber para ser un gurú de MongoDB. La mayoría de los expertos han aprendido a utilizar este método.

Por lo tanto, no será una excelente excepción si sigue su ejemplo. Los cursos en línea brindan aplicaciones del mundo real que ayudan a los usuarios a comprender más sobre este tema. La capacitación en línea es a su propio ritmo, lo que significa que usted determina cuánto tiempo llevará aprenderlos. Además, los cursos son ejercicios adicionales que ayudan a los novatos a aprender y ejercitarse más en MongoDB. Visite MongoDB University para obtener un montón de cursos gratuitos y aprender MongoDB.

2. ¿El servidor MongoDB es de uso gratuito?

Sí. El servidor MongoDB es de uso gratuito según el paquete que elija usar. Por ejemplo, el servidor de la comunidad es accesible para todos los usuarios. Sin embargo, si busca más funcionalidades, puede usar una versión paga como la edición MongoDB Enterprise o Atlas.

3. ¿Explicar las diferencias entre MongoDB y las bases de datos relacionales?

La mayoría de las bases de datos relacionales como MySQL, Oracle, SQL Server y Postgres se basan en arquitecturas diseñadas originalmente hace mucho tiempo (más de 40 años). Los requisitos de solicitud durante ese tiempo eran diferentes en comparación con los requisitos de solicitud de hoy en día.

MongoDB se basa en una arquitectura de sistemas distribuidos, a diferencia de las bases de datos relacionales, lo que permite a los usuarios escalar rápidamente sus bases de datos en varias instancias. para un análisis en profundidad, consulte las diferencias entre MongoDB y MySQL (una base de datos relacional). El propósito principal de diseñar MongoDB fue aumentar la productividad. La flexibilidad de esquema es lo que la mayoría de los usuarios buscaba, y esa es una de las fantásticas características que ofrece MongoDB.

4. ¿Cómo se puede obtener una licencia comercial de MongoDB?

Para obtener una licencia comercial de MongoDB, puede comprarla en MongoDB Enterprise Advanced.

5. ¿Explicar cómo se almacenan los datos en MongoDB?

En MongoDB, los datos se almacenan en documentos BSON que utilizan estructuras de datos en formato JSON. Los documentos contienen más de un campo y cada campo tiene un valor de tipo de datos específico que incluye datos binarios, matrices y subdocumentos. Los documentos que comparten estructuras similares se almacenan y organizan como colecciones.

6. ¿Dónde se puede ejecutar MongoDB?

Puede descargar, instalar y ejecutar MongoDB desde cualquier lugar. Siempre que complete la libertad de bloqueo de la plataforma, puede ejecutar MongoDB desde cualquier lugar. Por ejemplo, la versión de MongoDB Atlas brinda a los usuarios un servicio totalmente personalizado y administrado en AWS, Google Cloud y Azure que funciona según el principio de pago por uso. MongoDB Ops Manager es una de las mejores formas alternativas de ejecutar MongoDB en su infraestructura. Esto hace que sea fácil y rápido para los equipos monitorear, respaldar, escalar e implementar MongoDB.

7. Explique por qué MongoDB es útil?

MongoDB se basa en tres principios de diseño principales que permiten a los usuarios crear colectivamente aplicaciones más rápidas y de alta calidad. Los tres principios básicos de diseño son:

Diseño de Sistemas Distribuidos permite a los usuarios asignar datos donde quieran de forma inteligente.
Experiencia unificada: da a los usuarios la libertad de ejecutar en cualquier lugar. Este principio de diseño central permite la eliminación del bloqueo del proveedor y, al mismo tiempo, permite a los usuarios preparar sus aplicaciones para el futuro.
Modelo de datos de documentos: Esta función presenta a los usuarios la mejor y más sencilla manera de trabajar con datos.

8. ¿Cuándo se debe usar MongoDB?

MongoDB es una base de datos NoSQL versátil que se puede usar en aplicaciones analíticas y una variedad de otras aplicaciones OLTP. Se puede abordar una amplia gama de aplicaciones con MongoDB Atlas y MongoDB Server.

9. Explique cómo MongoDB protege los datos de los clientes.

MongoDB contiene amplias funciones que aseguran, detectan, controlan y defienden los datos del cliente. A continuación se presentan algunas de las funciones clave que ayudan a proteger los datos del cliente:

Autorización:
RBAC (Control de acceso basado en roles) permite a los usuarios configurar los permisos granulares que permiten a los usuarios o los privilegios basados ​​en aplicaciones necesarios para realizar sus tareas.

Auditoría es vital para el cumplimiento normativo, ya que permite a los administradores de seguridad utilizar el registro de auditoría nativo de MongoDB para registrar los cambios y las actividades de la base de datos.

Autenticación – MongoDB ofrece un mecanismo sólido de desafío-respuesta viable que simplifica el control de acceso a la base de datos basado en SCRAM-256 junto con la introducción de la infraestructura de seguridad empresarial integrada. Además, algunas de las funciones que obtiene son Windows Active Directory, certificados x.509, LDAP y Kerberos.

Cifrado en todas partes – Mientras están en movimiento, los datos de MongoDB se pueden cifrar en las redes y, mientras están en reposo, los datos se pueden cifrar en discos o copias de seguridad. Finalmente, los datos de MongoDB se pueden cifrar en la base de datos mientras están en uso.

Conclusión

Este artículo ha cubierto exhaustivamente todos los aspectos que uno necesita saber sobre MongoDB. Con el tiempo, los usuarios han buscado una productividad rápida, que MongoDB ofrece a sus usuarios. A diferencia de las bases de datos relacionales, como ya se mencionó en el artículo, MongoDB brinda a sus usuarios espacio para escalar sus bases de datos rápidamente.