MongoDB: el banco basado en documentos

Según la documentación oficial de MongoDB , Mongo es una base de datos basada en documentos con escalabilidad y flexibilidad, que facilita las consultas y la indexación.
Comienzo y escenario actual
Se introdujo por primera vez en 2009 y causó sensación en el mundo de las bases de datos. Desde entonces, rápidamente ha ganado popularidad. Según la Encuesta para desarrolladores de StackOverflow de 2019 , MongoDB ocupa el quinto lugar, con el 26% de los desarrolladores profesionales y el 25,5% de todos los encuestados diciendo que usan MongoDB.
DB-Engines también clasifica a MongoDB como la quinta base de datos más utilizada.
¿Qué significa "basado en documentos"?
La principal diferencia entre MongoDB y los principales sistemas de bases de datos relacionales tradicionales conocidos como RDBMS , es que en lugar de tablas, filas y columnas, la base para el almacenamiento en MongoDB es un documento.
Los documentos generalmente se modelan utilizando el formato JSON y luego se ingresan en la base de datos donde se convierten a un formato binario para su almacenamiento.
Relacionado con la base de documentos para el almacenamiento está el hecho de que los documentos MongoDB no tienen un esquema fijo. El principal beneficio de esto es que se reducen enormemente los gastos generales.
La reestructuración de bases de datos es fácil de aplicar y no causa los problemas masivos, fallas de sitios web y violaciones de seguridad que se observan en las aplicaciones que utilizan bases de datos relacionales.
¿Cuáles son las ventajas de MongoDB?
Otra característica que distingue a MongoDB de otras tecnologías de bases de datos es su capacidad para garantizar una alta disponibilidad mediante un proceso conocido como replicación .
Un servidor que ejecuta MongoDB puede tener copias de sus bases de datos duplicadas en dos servidores más. Estas copias se conocen como conjuntos de réplicas.
Los conjuntos de réplicas se organizan mediante un proceso de elección en el que los miembros de la réplica votan sobre qué servidor se convierte en maestro. Luego, a otros servidores se les asigna la función de servidores secundarios.
Otra característica, entre muchas, es la capacidad de MongoDB para manejar grandes cantidades de datos. Esto se hace dividiendo una colección considerable en varios servidores, creando un clúster fragmentado . En el proceso de división de la colección, se elige una clave de fragmento de los campos presentes en los documentos de la colección.
Luego, el equilibrador del clúster de fragmentos utiliza la clave de fragmento para determinar la distribución adecuada de los documentos.
¿Cómo utilizar MongoDB?
MongoDB está disponible en dos ediciones de servidor : Community y Enterprise y puede ejecutarse localmente o en la nube.
Para ejecutar la versión local Community o Enterprise, haga clic en este enlace y vea cómo instalar en cada sistema operativo , ya sea Linux, Mac o Windows.
Para utilizar la versión de nube compatible en AWS, Azure o Google Cloud Platform, haga clic en este enlace .
Documentos, campos y colecciones.
Para comprender completamente cómo usar MongoDB, es importante analizar los términos utilizados para describir las estructuras de datos de MongoDB: documentos, campos y colecciones(documents, fields, y collections en ingles).

Entonces, en lugar de columnas, los documentos de MongoDB tienen campos. En lugar de tablas, hay colecciones de documentos.
No SQL
Antes de empezar a utilizar MongoDB, es importante comprender sus fundamentos arquitectónicos. La clave para entender esto es lo que a menudo se llama NoSQL.
Una base de datos NoSQL no utiliza el lenguaje SQL . Más importante aún, esto significa que una base de datos NoSQL está libre de las restricciones bidimensionales heredadas que afectan a los RDBMS tradicionales.
No existe una definición formal de NoSQL, pero existen ciertas características comunes.
En primer lugar, una base de datos NoSQL no se adhiere al modelo relacional . Esto es evidente porque MongoDB no tiene esquemas, tablas, columnas o filas fijos.
Una segunda consideración es que las bases de datos NoSQL están impulsadas por necesidades de big data. En consecuencia, las bases de datos NoSQL tienden a ser escalables y distribuidas. Este aspecto es visible en la función de MongoDB llamada fragmentación(sharding) , donde los fragmentos(shards) de la base de datos se distribuyen a un grupo de servidores.
Finalmente, sin tablas, filas y columnas, las bases de datos NoSQL utilizan otros paradigmas de modelado. Por ejemplo:
Gráfico : una tecnología de base de datos diseñada de manera casi visual donde las entidades básicas que deben almacenarse se representan como nodos. Están conectados por aristas, que pueden considerarse como líneas que conectan los distintos nodos. Finalmente, están las propiedades, que son como metadatos en nodos. Un ejemplo de este tipo es Neo4j .
Clave/Valor : donde los datos se almacenan como claves y valores. Esto es análogo a una matriz multidimensional donde los valores se pueden obtener rápida y fácilmente simplemente haciendo referencia a la clave. Algunas bases de datos de estilo gráfico utilizan esta tecnología internamente. Un ejemplo de este tipo es Redis .
Documento : la base de datos de estilo documento utiliza lo que equivale a un objeto como su unidad lógica más pequeña. Se almacenan varios documentos en una colección. Cada documento puede tener los mismos campos, lo que facilita la consulta. Por otro lado, al no existir un esquema fijo, cada documento puede tener un número y tipo de campo diferente, lo que contribuye a la flexibilidad. Un ejemplo de este tipo es MongoDB.
Conclusión
MongoDB representa un cambio radical en comparación con las tecnologías de bases de datos relacionales. Se introdujo para satisfacer una necesidad no abordada por el escenario actual de los sistemas RDBMS, que se basaban, en su mayor parte, en tecnología de casi 50 años, manipulación de big data y modelado de objetos, siendo inicialmente propietarios y luego lanzados como código abierto.
Autores:
Artículo adaptado y traducido por Daysibel Cotiz.
Guilherme Lima
Guilherme es desarrollador de software licenciado en Sistemas de Información y tiene experiencia en programación utilizando diferentes tecnologías como Python, Javascript y Go. Creador de más de 30 cursos en diferentes áreas de la plataforma con enfoque en la formación de profesionales de TI, como Ciencia de Datos, Python para la web con Django y Django Rest, juegos con Javascript, Infraestructura como código con Terraform y Ansible, Orientación a objetos con Go. Además, es uno de los instructores del Dev Immersion de Alura.