MongoDB es una base de datos de documentos diseñada para ayudar a los desarrolladores a crear aplicaciones modernas más rápidamente. Almacena datos en documentos flexibles similares a JSON, lo que facilita el modelado de datos de la misma manera en que el código de la aplicación los utiliza. El esquema flexible te permite evolucionar tu modelo de datos sin tiempo de inactividad, 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 está construido sobre varios componentes arquitectónicos esenciales que lo diferencian 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 multidocumento permiten operaciones complejas que requieren coherencia de los datos.
Alta Disponibilidad: la replicación y la conmutación por error automática garantizan que tus datos estén siempre disponibles.
Escalado horizontal: el particionado permite el escalado horizontal para gestionar 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 flexible modelo de datos orientado a objetos de MongoDB te permite estructurar los datos de una manera que refleje los modelos de objetos en tu base de código. Esto elimina la necesidad del complejo mapeo objeto-relacional requerido al utilizar bases de datos relacionales.
Aquí tienes un ejemplo de un documento de MongoDB que muestra cómo los documentos pueden expresar datos complejos y jerárquicos en un formato que refleja el modelo de objetos de tu 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"] }
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 incrustados y arreglos reducen la necesidad de uniones costosas que pueden ralentizar el rendimiento.
Los esquemas dinámicos permiten el polimorfismo, lo que da lugar a que existan estructuras variadas entre los documentos de una 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 vistasde solo lectura.
Transacciones
MongoDB admite transacciones multidocumento, que te permiten ejecutar múltiples operaciones de lectura y escritura como un único evento "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 incorporado de MongoDB ofrece conmutación por error automática, redundancia de datos y una mayor capacidad de lectura. Con conmutación por error automática, si el servidor primario deja de estar disponible, el clúster elige automáticamente un nuevo primario, lo que garantiza que las escrituras sigan disponibles. Además, múltiples copias de tus datos se almacenan en diferentes servidores para mejorar la durabilidad de los datos.
Escala horizontal
MongoDB admite de forma nativa el escalamiento horizontal a través de una técnica llamada Sharding.
Las principales funcionalidades de particionado son:
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.
Particionado por zonas: Puedes definir zonas geográficas para controlar la ubicación de los documentos en función de los rangos de claves de partición.
Refinamiento de clave de partición: Puedes refinar tu clave de partición para mejorar el rendimiento a medida que tu aplicación evoluciona.