6 MongoDB


6.1 Introducción e historia

MongoDB es un sistema gestor de base de datos NoSQL orientado a documentos y de código abierto. Es una base de datos que usa documentos con una estructura JSON, proporcionando un esquema dinámico y haciendo que la integración de los datos sea muy fácil y rápida.

MongoDB fue fundada en 2007 por la empresa 10gen Inc.El equipo desarrolló y utilizó muchos almacenes de datos personalizados para evitar deficiencias de las bases de datos existentes. Empezó porque estaban desarrollando una plataforma como servicio similar al conocido Google App Engine. En 2009 fue lanzado como un producto independiente y publicado bajo licencia AGPL.

En 2013 10gen cambió su nombre a MongoDB inc. y en 2014 se lanzó la versión 1.4, considerándose una base de datos lista para su uso en producción.

La última versión estable es la 3.4.4 y fue lanzada el 21 de Abril de 2017.

6.2 Estructura

A diferencia de las bases de datos relacionales como PostgreSQL, MongoDB estructura los datos de otra forma: en documentos de esquema libre. En un documento cada fila o registro puede tener un esquema diferente con diferentes columnas o atributos.

Cada documento pertenece a una colección, es decir, cada colección tiene un conjunto de documentos y cada documento tiene asociado un documento BSON.

BSON o Binary JSON es una versión modificada de JSON que permite búsquedas rápidas de datos.

"BSON ofrece la facilidad de uso y flexibilidad de los documentos JSON junto a la velocidad y riqueza en un formato binario ligero" [9]

MongoDB almacena de forma explícita las longitudes de los campos, índices etc para realizar una indexación más rápida.

Si bien es cierto que un documento BSON ocupa más espacio que un documento JSON la idea en las bases de datos NoSQL es que el almacenamiento es barato, de forma que merece la pena si con ello se aumenta la velocidad de extracción de información.

En la práctica a la hora de trabajar con documentos, siempre se trabaja en formato JSON. El formato JSON en MongoDB sigue la siguiente estructura:

{
    "_id": "1",
    "nombre": "Trabajo de fin de grado",
    "ambito": ["MongoDB", "PostgreSQL", "Bases de datos"]
}

6.3 Características

Algunas de sus principales características son:

  • Consultas ad-hoc. MongoDB soporta búsquedas por campos, rangos y expresiones regulares. Las consultas pueden devolver un campo específico de un documento o una función JavaScript previamente definida.

  • Indexación. Cualquier campo en un documento de MongoDB puede ser indexado. También pueden hacerse índices secundarios. Los índices en MongoDB son similares a los encontrados en las bases de datos relacionales.

  • Replicación. MongoDB proporciona alta disponibilidad con los conjuntos de réplica. Un conjunto de réplica son dos o más copias de los datos. Cada miembro del conjunto de réplica puede actuar en el papel de primaria o secundaria en cualquier momento.

    Todas las escrituras y lecturas se realizan en la primaria de forma predeterminada y en las secundarias se mantienen una copia del primario mediante replicación.

    Cuando una réplica primaria falla, el conjunto de réplicas lleva a cabo un proceso de elección para determinar qué réplica secundaria pasa a ser primaria.

  • Balanceo de carga. MongoDB escala horizontalmente usando la técnica sharding.El usuario elige una clave de shard que determina cómo van a ser distribuidos los datos en una colección. Los datos son divididos en rangos basados en la clave de shard y distribuidos a través de múltiples shard. Además, cada puede ser un conjunto de réplica.

    MongoDB puede ejecutarse en múltiples servidores, balanceando la carga o replicando los datos para mantener el sistema funcionando en caso de fallos.

  • Almacenamiento de archivos. MongoDB puede ser utilizado como un sistema de archivos con balanceo de carga y replicación de datos utilizando múltiples servidores para el almacenamiento.

    Esta función se llama Grid File Systemy está implementada en los drivers, por lo que está incluida entre los drivers oficiales que ofrece la compañía. Exponen funciones y métodos para la manipulación de archivos y contenido a los desarrolladores.

    Este sistema es utilizado en plugins para NGINX y lighthttpd. GridFS divide los ficheros en partes o chunks y almacena cada uno en un documento separado. Con esto se crea una réplica y se distribuye de forma transparente, creando un sistema eficiente que maneja fallos y balancea la carga.

  • Agregación. MongoDB proporciona una función MapReduce que puede ser utilizada para el procesamiento de datos por lotes y operaciones de agregado.

    El framework de agregación permite a los usuarios realizar operaciones similares a las obtenidas con el comando SQL group by. Este framework está construido como un pipeline en el que los datos van pasando por diferentes etapas en las cuales los datos son modificados, agregados, filtrados y formateados hasta obtener el resultado deseado.

  • Ejecución de JavaScript en el lado servidor. Se puede utilizar JavaScript para realizar consultas y funciones de agregación, pudiendo mandarse directamente a la base de datos para ser ejecutadas.

  • Colecciones con tapas. MongoDB admite colecciones de tamaño fijo. Este tipo de colecciones se mantiene el orden de inserción y, una vez alcanzado el tamaño especificado, se comporta como una cola circular.

  • APIs. Proporciona soporte para muchos lenguajes de programación como C, Java, Erlang, JavaScript, Node.js, Python, PHP etc.

Los principales límites en tamaños de MongoDB son los siguientes:

Límite Valor
Tamaño máximo de base de datos 32 TB
Número máximo de colecciones Limitado al espacio de nombres, que son 24.000
Tamaño máximo de documento 16 MB
Máxima profundidad por documento No más de 100 niveles de anidamiento
Número máximo de índices por colección Ilimitado

Límites en MongoDB - [10]

results matching ""

    No results matching ""