Base de datos MongoDB

MongoDB

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (14 votos, promedio: 5,00 de 5)
Cargando...

MongoDB es la base de datos NoSQL más utilizada

El software de servidor de base de datos NoSQL MongoDB trabaja con colecciones de documentos en lugar de tablas. Los documentos de una colección en MongoDB no necesariamente deben tener los mismos campos como si lo deben hacer las bases de datos relacionales. Por lo tanto Mongo es un servidor de base de datos que permite no definir un esquema en las propias bases de datos. MongoDB trabaja con BSON que es un tipo de JSON binario.

¿Qué es MongoDB?

mongodb es un motor de base de datos NoSQL o lo que es lo mismo, un software para crear un servidor de base de datos.  MongoDB no utiliza el lenguaje SQL tradicional.

El servidor de base de datos MongoDB puede ejecutarse en servidores en cluster y en réplica. Al ejecutar MongoDB en réplica se obtiene mayor estabilidad de la aplicación. Un cluster de Mongo en réplica tiene la información duplicada y en caso de fallar uno de los nodos, Mongo es capaz de utilizar otro de los nodos incluídos en el cluster  que contengan la información perdida. Esto es ideal para evitar las caídas inesperadas en la aplicación por el fallo de uno de los servidores.

MongoDB también puede trabajar en Sharding o también llamado Sharded Cluster. Cuando el volumen de datos a almacenar es enorme y no caben en un solo servidor, Sharding es la forma de distribuir las grandes colecciones de datos en varios servidores o escalado horizontal.

Un Sharded Cluster de Mongo se compone de 3 distintos componentes:

  1. Shard: Los Shards son los encargados de almacenar los datos en sí. Pueden existir muchos y la cantidad de Shards depende del volumen de datos a almacenar y de las réplicas.
  2. Mongos: Son los encargados de ejecutar las consultas sobre los shards. Cuando se trabaja modo sharded cluster, las aplicaciones conectan a estos servidores para realizar las operaciones contra los shards. Dentro de un cluster pueden existir varios Mongos para el balanceo de carga.
  3. Config Servers: Los servidores de configuración en un cluster se encargan de almacenar la configuración del cluster y los metadatos. Esto quiere decir que aquí se guarda en que Shard esta cada parte de los datos. Estos servidores deben estar en réplica para que evitar la pérdida de información.

¿Para que utilizar MongoDB?

MongoDB es una base de datos, por lo que se puede utilizan en cualquier proyecto. Dónde mejor funciona es para guardar datos que tengan campos comunes y no comunes. Por ejemplo, en un diseño de tienda online multiproducto, donde pueden convivir libros y zapatillas, estos dos tipos de productos tienen en común que son artículos y tienen campos como título, precio o descripción, pero estos artículos son distintos, el libro tiene el número ISBN y las zapatillas tienen la marca. En una base de datos relacional se debería crear un esquema con un campo marca y un campo isbn para los dos registros, en mongodb no es necesario.

Las ventajas de MongoDB

  • Escalabilidad horizontal: MongoDB está diseñado para escalar horizontalmente de manera efectiva, lo que significa que es fácil agregar nuevos servidores y nodos para manejar más datos y aumentar la capacidad de carga de una aplicación o sistema.
  • Flexibilidad en el esquema de datos: MongoDB es una base de datos NoSQL, lo que significa que no utiliza un esquema de datos rígido como una base de datos relacional. Esto brinda una mayor flexibilidad en la estructura y el tipo de datos que se pueden almacenar, lo que permite un modelado de datos más natural.
  • Rendimiento: MongoDB es conocido por su alto rendimiento, lo que lo hace adecuado para aplicaciones de alta demanda y para el procesamiento de grandes volúmenes de datos.
  • Replicación y alta disponibilidad: MongoDB incluye características de replicación y alta disponibilidad, lo que significa que se pueden configurar varias réplicas de la base de datos para garantizar que los datos estén siempre disponibles y que se pueda recuperar de forma rápida en caso de fallos.
  • Indexación eficiente: MongoDB utiliza un sistema de indexación eficiente para permitir búsquedas y consultas rápidas y eficientes en grandes conjuntos de datos.
  • Comunidad y soporte: MongoDB tiene una gran comunidad de desarrolladores y una amplia variedad de recursos de soporte disponibles en línea, lo que facilita la solución de problemas y el aprendizaje de nuevas habilidades.

Ejemplos de utilización de MongoDB en empresas

  • Adobe: Adobe, una empresa de software de creatividad y marketing, utiliza MongoDB para almacenar y gestionar grandes cantidades de datos de usuario y de marketing. Utilizan MongoDB para mejorar el análisis de datos y la personalización del contenido en tiempo real.
  • eBay: eBay, una empresa de comercio electrónico, utiliza MongoDB para almacenar y gestionar datos de transacciones y de usuarios en sus aplicaciones y sistemas. Utilizan MongoDB para mejorar la escalabilidad y la eficiencia en la gestión de datos.
  • Lyft: Lyft, una empresa de servicios de transporte, utiliza MongoDB para almacenar y gestionar datos de viajes, conductores y usuarios. Utilizan MongoDB para mejorar la eficiencia y la escalabilidad en la gestión de datos.
  • Google: Google, una empresa de tecnología, utiliza MongoDB para almacenar y gestionar datos en algunos de sus proyectos internos, incluyendo Google AdWords y Google Analytics. Utilizan MongoDB para mejorar la escalabilidad y la eficiencia en la gestión de datos.
  • The Weather Channel: The Weather Channel, una empresa de pronósticos del tiempo, utiliza MongoDB para almacenar y gestionar datos de clima en tiempo real. Utilizan MongoDB para mejorar la escalabilidad y la eficiencia en la gestión de datos y la entrega de información meteorológica precisa.
  • Cisco: Cisco, una empresa de tecnología de la información, utiliza MongoDB para almacenar y gestionar datos de varios sistemas y aplicaciones internas. Utilizan MongoDB para mejorar la eficiencia y la escalabilidad en la gestión de datos.
  • Urban Outfitters: Urban Outfitters, una empresa minorista de moda, utiliza MongoDB para almacenar y gestionar datos de productos, pedidos y clientes en sus sistemas de comercio electrónico y tiendas físicas. Utilizan MongoDB para mejorar la escalabilidad y la eficiencia en la gestión de datos.
  • T-Mobile: T-Mobile, una empresa de servicios de telecomunicaciones, utiliza MongoDB para almacenar y gestionar datos de usuarios y de red en sus sistemas y aplicaciones internas. Utilizan MongoDB para mejorar la escalabilidad y la eficiencia en la gestión de datos.
  • Pfizer: Pfizer, una empresa farmacéutica, utiliza MongoDB para almacenar y gestionar datos de investigación y desarrollo en sus proyectos internos. Utilizan MongoDB para mejorar la eficiencia en la gestión de datos y en la toma de decisiones en investigación y desarrollo.

Tutorial para instalar MongoDB con Docker y en réplica

Tras instalar docker crear una red propia con nombre mongonet o cualquier otro nombre

docker network create --subnet=172.18.0.0/24 mongonet

Descargar la imagen desde el repositorio de docker

docker pull docker.io/mongo

Crear y arrancar dos contenedores de mongodb en la red creada asignando una IP de la red en concreto a cada uno de ellos y montando para cada contenedor su propio volumen para almacenar los datos de forma permanente en un directorio local /mnt/m1/data para el primer contenedor réplica y /mnt/m2/data para la segunda réplica

docker run --name m1 --hostname m1.domain.local --net mongonet --ip 172.18.0.20 --restart always -v /mnt/m1/data:/data/db -d docker.io/mongo mongod --replSet mongoset --bind_ip_all
docker run --name m2 --hostname m2.domain.local --net mongonet --ip 172.18.0.21 --restart always -v /mnt/m2/data:/data/db -d docker.io/mongo mongod --replSet mongoset --bind_ip_all

Instalar manualmente MongoDB en un servidor Centos

Para instalar mongodb en el servidor lo primero que se debe hacer es importar el repositorio de mongodb, para ello se crea el archivo del repositorio y se edita

touch /etc/yum.repos.d/mongodb-org-3.0.repo
vi /etc/yum.repos.d/mongodb-org-3.0.repo

Ahora se pega el siguiente contenido, antes de hacer control+v para pegar, pulsar la letra I en el editor vi. Tras pegar y para finalizar, :q y Intro.

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

Ahora ya se puede ejecutar el comando yum para hacer la instalación

sudo yum install -y mongodb-org
semanage port -a -t mongod_port_t -p tcp 27017
vi /etc/selinux.conf    SELINUX=permissive or SELINUX=disabled

Se inicia y se pone para que al reiniciar se vuelva a iniciar el solo

sudo service mongod start
sudo chkconfig mongod on

El fichero de configuración de mongo db donde se pueden ajustar los parámetros de configuración se encuentra en el directorio etc, en concreto /etc/mongo.conf

En lugar cargar el repositorio de mongodb, también es posible instalar el repositorio EPEL si no esta disponible en el servidor y después instalar mongo db directamente.

yum install epel-release
yum install mongodb-server mongodb

Clientes para MongoDB

Una vez instalado mongodb en el servidor se pueden utilizar distintos programas para conectarse y realizar operaciones, existen muchos softwares para mongoDB, y aquí alguno de ellos:

  • Mongo Shell: Es la utilidad que viene con mongodb, simplemente teclea mongo desde la consola y se carga la linea de comandos de mongodb dónde se pueden ejecutar todo tipo de operaciones.
  • MongoHub: Una GUI para Mac que se puede descargar gratis.
  • NoSQLClient: Es una interfaz web para gestionar MongoDB que se puede instalar en cualquier servidor web
  • PHPMoAdmin: Otra interfaz web para MongoDB

Como crear una copia de seguridad de una colección en MongoDB y restaurar el backup

Para crear un backup en mongo db existen dos utilidades de consola. Una utilidad se llama mongoexport y la otra mongodump y que pasando los parámetros necesarios realiza una copia de seguridad de una colección de Mongo. Mongo export permite exportar a json o a CSV y mongodumb crea el backup en BSON.

Para utilizarlas se deben pasar los parámetros necesarios como el host de mongo, la contraseña y el usuario si se tienen y la base de datos o colecciones a extraer.

mongoexport -h localhost -u username -p password -d basededatos -c colección -o mybackup.json
mongoexport --host localhost --db basededatos --collection colección --type=csv --out mybackup.csv --fields firstname,secondname,mobile,email,city

La herramienta mongodump genera el backup completo o parcial de una base de datos mongo db

mongodump -d <database name> -o <directory_backup>
mongodump -d basededatos -o basededatos.json
mongodump --db basededatos --collection colección

Ahora si por el contrario se quiere restaurar un backup en el servidor de base de datos mongo, una opción rápida es utilizar la herramienta mongorestore

mongorestore -d basededatos basededatos/

Módulos necesarios para programar contra Mongo DB

  • MongoDB en Perl

    cpan install DateTime Config::AutoConf Path::Tiny YAML MongoDB
    cpan install IO::Socket::SSL
    cpan install IO::Socket::IP
    cpan install TAP::Parser
    cpan install Time::Moment
    cpan install Module::Build
    cpan install MongoDB::Collection
    cpan install App::cpanminus
    cpanm install MongoDB::QueryBuilder

  • MongoDB dede PHP
    yum install sclo-php71-php-pecl-mongodb sclo-php70-php-pecl-mongodb sclo-php70-php-pecl-mongodb sclo-php56-php-pecl-mongodb php-mongodb
    pecl install mongo
    echo “extension=mongo.so” > /etc/php.d/mongo.ini
  • NodeJS
    npm install mongodb –save

Más información de la base de datos noSQL en la página oficial de mongodb

 

Deja una respuesta