¿Qué es MongoDB?
MongoDB es una base de datos NoSQL orientada a documentos que se utiliza para el almacenamiento de datos de gran volumen. En lugar de usar tablas y filas como en las bases de datos relacionales tradicionales, MongoDB hace uso de colecciones y documentos. Los documentos constan de pares clave-valor que son la unidad básica de datos en MongoDB. Las colecciones contienen conjuntos de documentos y funciones que son equivalentes a las tablas de bases de datos relacionales. MongoDB es una base de datos que salió a la luz a mediados de la década de 2000.
En este tutorial, aprenderá:
- Funciones de MongoDB
- Ejemplo de MongoDB
- Componentes clave de la arquitectura MongoDB
- Por qué usar MongoDB
- Modelado de datos en MongoDB
- Diferencia entre MongoDB y RDBMS
Funciones de MongoDB
- Cada base de datos contiene colecciones que a su vez contienen documentos. Cada documento puede ser diferente con un número variable de campos. El tamaño y el contenido de cada documento pueden ser diferentes entre sí.
- La estructura del documento está más en línea con la forma en que los desarrolladores construyen sus clases y objetos en sus respectivos lenguajes de programación. Los desarrolladores suelen decir que sus clases no son filas y columnas, sino que tienen una estructura clara con pares clave-valor.
- Las filas (o documentos como se llaman en MongoDB) no necesitan tener un esquema definido de antemano. En cambio, los campos se pueden crear sobre la marcha.
- El modelo de datos disponible en MongoDB le permite representar relaciones jerárquicas, almacenar matrices y otras estructuras más complejas con mayor facilidad.
- Escalabilidad: los entornos de MongoDB son muy escalables. Empresas de todo el mundo han definido clústeres y algunos de ellos ejecutan más de 100 nodos con alrededor de millones de documentos dentro de la base de datos.
Ejemplo de MongoDB
El siguiente ejemplo muestra cómo se puede modelar un documento en MongoDB.
- MongoDB agrega el campo _id para identificar de forma única el documento en la colección.
- Lo que puede notar es que los datos del pedido (Id. De pedido, producto y cantidad) que en RDBMS normalmente se almacenarán en una tabla separada, mientras que en MongoDB se almacenan en realidad como un documento incrustado en la propia colección. Esta es una de las diferencias clave en cómo se modelan los datos en MongoDB.
Componentes clave de la arquitectura MongoDB
A continuación se muestran algunos de los términos comunes utilizados en MongoDB
- _id : este es un campo obligatorio en todos los documentos de MongoDB. El campo _id representa un valor único en el documento MongoDB. El campo _id es como la clave principal del documento. Si crea un documento nuevo sin un campo _id, MongoDB creará automáticamente el campo. Entonces, por ejemplo, si vemos el ejemplo de la tabla de clientes anterior, Mongo DB agregará un identificador único de 24 dígitos a cada documento de la colección.
_Identificación | Identificación del cliente | Nombre del cliente | Solicitar ID |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Colección : esta es una agrupación de documentos MongoDB. Una colección es el equivalente a una tabla que se crea en cualquier otro RDMS como Oracle o MS SQL. Existe una colección dentro de una sola base de datos. Como se ve en la introducción, las colecciones no imponen ningún tipo de estructura.
- Cursor : es un puntero al conjunto de resultados de una consulta. Los clientes pueden iterar a través de un cursor para recuperar resultados.
- Base de datos : este es un contenedor para colecciones como en RDMS en el que es un contenedor para tablas. Cada base de datos obtiene su propio conjunto de archivos en el sistema de archivos. Un servidor MongoDB puede almacenar varias bases de datos.
- Documento : un registro en una colección de MongoDB se denomina básicamente documento. El documento, a su vez, constará de nombre de campo y valores.
- Campo : un par de nombre-valor en un documento. Un documento tiene cero o más campos. Los campos son análogos a las columnas en las bases de datos relacionales.
El siguiente diagrama muestra un ejemplo de campos con pares clave-valor. Entonces, en el ejemplo siguiente CustomerID y 11 es uno de los pares clave-valor definidos en el documento.
- JSON : esto se conoce como notación de objetos JavaScript. Este es un formato de texto sin formato legible por humanos para expresar datos estructurados. Actualmente, JSON es compatible con muchos lenguajes de programación.
Solo una nota rápida sobre la diferencia clave entre el campo _id y un campo de colección normal. El campo _id se utiliza para identificar de forma única los documentos de una colección y MongoDB lo agrega automáticamente cuando se crea la colección.
¿Por qué utilizar MongoDB?
A continuación se muestran algunas de las razones por las que uno debería comenzar a usar MongoDB
- Orientado a documentos: dado que MongoDB es una base de datos de tipo NoSQL, en lugar de tener datos en un formato de tipo relacional, almacena los datos en documentos. Esto hace que MongoDB sea muy flexible y adaptable a la situación y los requisitos del mundo empresarial real.
- Consultas ad hoc: MongoDB admite búsquedas por campo, consultas de rango y búsquedas de expresiones regulares. Se pueden realizar consultas para devolver campos específicos dentro de los documentos.
- Indexación: se pueden crear índices para mejorar el rendimiento de las búsquedas dentro de MongoDB. Se puede indexar cualquier campo de un documento de MongoDB.
- Replicación: MongoDB puede proporcionar alta disponibilidad con conjuntos de réplicas. Un conjunto de réplicas consta de dos o más instancias de base de datos mongo. Cada miembro del conjunto de réplicas puede actuar como réplica principal o secundaria en cualquier momento. La réplica principal es el servidor principal que interactúa con el cliente y realiza todas las operaciones de lectura / escritura. 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 cambia automáticamente al secundario y luego se convierte en el servidor principal.
- Equilibrio de carga: MongoDB utiliza el concepto de fragmentación para escalar horizontalmente dividiendo los datos en varias instancias de MongoDB. MongoDB puede ejecutarse en varios servidores, equilibrando la carga y / o duplicando datos para mantener el sistema en funcionamiento en caso de falla del hardware.
Modelado de datos en MongoDB
Como hemos visto en la sección Introducción, los datos en MongoDB tienen un esquema flexible. A diferencia de las bases de datos SQL, donde debe tener declarado el esquema de una tabla antes de insertar datos, las colecciones de MongoDB no imponen la estructura del documento. Este tipo de flexibilidad es lo que hace que MongoDB sea tan poderoso.
Al modelar datos en Mongo, tenga en cuenta lo siguiente
- ¿Cuáles son las necesidades de la aplicación? Observe las necesidades comerciales de la aplicación y vea qué datos y el tipo de datos necesarios para la aplicación. En base a esto, asegúrese de que la estructura del documento se decida en consecuencia.
- ¿Qué son los patrones de recuperación de datos? Si prevé un uso intensivo de consultas, considere el uso de índices en su modelo de datos para mejorar la eficiencia de las consultas.
- ¿Se realizan inserciones, actualizaciones y eliminaciones frecuentes en la base de datos? Reconsidere el uso de índices o incorpore la fragmentación si es necesario en su diseño de modelado de datos para mejorar la eficiencia de su entorno general de MongoDB.
Diferencia entre MongoDB y RDBMS
A continuación se muestran algunas de las diferencias de términos clave entre MongoDB y RDBMS
RDBMS | MongoDB | Diferencia |
---|---|---|
Mesa | Colección | En RDBMS, la tabla contiene las columnas y filas que se utilizan para almacenar los datos, mientras que, en MongoDB, esta misma estructura se conoce como colección. La colección contiene documentos que a su vez contienen campos, que a su vez son pares clave-valor. |
Fila | Documento | En RDBMS, la fila representa un solo elemento de datos estructurado implícitamente en una tabla. En MongoDB, los datos se almacenan en documentos. |
Columna | Campo | En RDBMS, la columna denota un conjunto de valores de datos. Estos en MongoDB se conocen como campos. |
Uniones | Documentos incrustados | En RDBMS, los datos a veces se distribuyen en varias tablas y, para mostrar una vista completa de todos los datos, a veces se forma una combinación entre las tablas para obtener los datos. En MongoDB, los datos normalmente se almacenan en una sola colección, pero separados mediante documentos incrustados. Por tanto, no existe el concepto de combinaciones en MongoDB. |
Aparte de las diferencias de términos, a continuación se muestran algunas otras diferencias
- Las bases de datos relacionales son conocidas por hacer cumplir la integridad de los datos. Este no es un requisito explícito en MongoDB.
- RDBMS requiere que los datos se normalicen primero para evitar registros huérfanos y duplicados. La normalización de datos luego tiene el requisito de más tablas, lo que resultará en más combinaciones de tablas, lo que requerirá más claves e índices.
A medida que las bases de datos comienzan a crecer, el rendimiento puede comenzar a convertirse en un problema. Nuevamente, este no es un requisito explícito en MongoDB. MongoDB es flexible y no necesita que los datos se normalicen primero.