MongoDB es una base de datos documental diseñada para ayudar a los desarrolladores a crear aplicaciones modernas con mayor rapidez. Almacena datos en documentos flexibles, similares a JSON, lo que facilita su modelado tal como el código de la aplicación los utiliza. Su esquema flexible permite desarrollar el modelo de datos sin interrupciones, iterar rápidamente y gestionar fácilmente datos no uniformes.
MongoDB proporciona un potente motor de consulta, escalamiento horizontal y alta disponibilidad incorporada para que pueda soportar todo, desde creación rápida de prototipos hasta grandes cargas de trabajo de misión crítica.
MongoDB es una base de datos operativa totalmente transaccional que admite una amplia gama de tipos de cargas de trabajo, entre los que se incluyen:
Arquitectura central
MongoDB se basa en varios componentes arquitectónicos centrales que lo distinguen de las bases de datos relacionales:
Base de datos de documentos: el modelo de datos de documentos flexible le permite asignar sus datos a las necesidades de su aplicación.
Transacciones: Las transacciones ACID de múltiples documentos permiten operaciones complejas que requieren consistencia de datos.
Alta disponibilidad: la replicación y la conmutación por error automática garantizan que sus datos estén siempre disponibles.
Escalamiento horizontal: la fragmentación permite el escalamiento horizontal para manejar grandes conjuntos de datos y alto rendimiento.
Base de datos de documentos
Un registro en MongoDB es un documento, que es una estructura de datos compuesta por pares de campo y valor. Los documentos de MongoDB son similares a los objetos JSON. Los valores de los campos pueden incluir otros documentos, arreglos y arreglos de documentos.
El modelo de datos flexible y orientado a objetos de MongoDB permite estructurar los datos de forma que refleje los modelos de objetos de su código base. Esto elimina la necesidad del complejo mapeo objeto-relacional que requieren las bases de datos relacionales.
A continuación se muestra un ejemplo de un documento MongoDB que muestra cómo los documentos pueden expresar datos complejos y jerárquicos en un formato que refleja el modelo de objetos de su aplicación:
{ _id: ObjectId("507f1f77bcf86cd799439011"), name: "Alice", birthdate: ISODate("1990-01-01T00:00:00Z"), address: { street: "123 Main St", city: "Springfield", state: "IL" }, hobbies: ["reading", "hiking", "coding"] }
Las ventajas adicionales del modelo de datos de documentos son:
Los documentos corresponden a tipos de datos nativos en muchos lenguajes de programación.
Los documentos y matrices integrados reducen la necesidad de realizar uniones costosas que pueden ralentizar el rendimiento.
Los esquemas dinámicos admiten el polimorfismo, lo que permite estructuras variadas entre los documentos de la misma colección.
MongoDB almacena documentos en colecciones. Las colecciones son similares a las tablas relacionales, pero no siguen un esquema rígido y predefinido.
Además de las colecciones, MongoDB admite vistas de solo lectura.
Transacciones
MongoDB admite transacciones de múltiples documentos, lo que le permite ejecutar múltiples operaciones de lectura y escritura como un único evento de todo o nada.
Las características clave de la transacción incluyen:
Garantías ACID: Las transacciones proporcionan atomicidad, consistencia, aislamiento y durabilidad en múltiples operaciones.
Operaciones multidocumento: puede ejecutar operaciones complejas que abarquen varios documentos manteniendo la consistencia de los datos.
Transacciones distribuidas: puede coordinar transacciones entre clústeres fragmentados con las mismas garantías ACID.
Para aprender más, consulta Transacciones.
Alta disponibilidad
El mecanismo de replicación integrado de MongoDB proporciona conmutación por error automática, redundancia de datos y mayor capacidad de lectura. Con la conmutación por error automática, si el servidor principal deja de estar disponible, el clúster elige automáticamente uno nuevo, lo que garantiza que las escrituras permanezcan disponibles. Además, se almacenan múltiples copias de sus datos en diferentes servidores para mejorar su durabilidad.
Escala horizontal
MongoDB admite de forma nativa el escalamiento horizontal a través de una técnica llamada Sharding.
Las características clave de fragmentación incluyen:
Distribución automática de datos: MongoDB particiona automáticamente los datos en función de una clave de fragmento y los distribuye entre un clúster de máquinas.
Fragmentación de zonas: puede definir zonas geográficas para controlar la ubicación de los documentos en función de rangos de claves de fragmentación.
Refinamiento de clave de fragmento: puede refinar su clave de fragmento para mejorar el rendimiento a medida que su aplicación evoluciona.