Skip to content

Cómo crear una base de datos escalable MongoDB

MongoDB es una base de datos del tipo NoSQL con características especiales, ya que en vez de almacenar la información en tablas como suelen hacer las bases de datos relacionales, los datos los almacena en documentos con estructura de datos del tipo JSON. Esto permite escalar su base de datos a tantos servidores como deseemos mediante la distribución de contenido entre ellos.

Antes de empezar a utilizar MongoDB y realizar su instalación, debemos asegurarnos de que disponemos del hardware adecuado en nuestro servidor, así como verificar que el software funciona de forma correcta. Veamos las comprobaciones que debemos realizar.

1.- Discos duros

Si tienes la posibilidad de elegir el tipo de disco duro que utilizar, la mejor opción sería decantarse por las unidades SSD en RAID1, ya que se caracterizan por ofrecer un gran rendimiento.

Edita tu “/etc/fstab” en tu distribución Linux y asegúrate de desactivar el registro de tiempo de acceso para que MongoDB no tenga problemas. Para ello añadimos “noatime” en la cuarta columna.

Volvemos a montar la unidad.

Verificamos que los cambios se han efectuado.

2.- CPU y memoria

Configurando MongoDB como una VM nos permitirá escalar la RAM y las CPU más adelante. La cantidad de cores de CPU y RAM asignada depende de las necesidades de nuestra infraestructura.

3.- Optimización

A continuación os dejamos algunos consejos para optimizar las consultas a la base de datos.

  • Añadir índices para la búsqueda.
  • Utilizar el comando “explain()” de MongoDB.
  • Limitar los resultados de búsqueda y limitar los campos que serán devueltos.

Para nuestro ejemplo, vamos a suponer que tenemos tres instancias, tal y como se puede ver en la siguiente imagen.

Instalación

Este proceso será el mismo tanto para mongodb1, como mongodb2 y mongodb3. Instalar MongoDB en Centos es muy simple.

Agregamos el siguiente repositorio.

Ahora instalamos los paquetes.

Habilitamos MongoDB para que se inicie cada vez que arranque el sistema, y arrancamos el servicio.

Ahora deberías poder ver las estadísticas en http://SERVER:28017

Configurar las réplicas de Master – Esclavo

Asignaremos mongodb1 como servidor maestro. Añadimos “master = true” a “/etc/mongodb.conf” y reiniciar el servicio.

Mientras, mongodb2 y mongodb3 será configurado como esclavos.

Añadimos “slave=true”, “source = mongodb1” en “/etc/mongod.conf” y reiniciamos el servicio.

El siguiente paso sería proteger esa base de datos con una contraseña o bien añadiendo una regla en nuestra iptables para los puertos 27017 (MongoDB) y 28017 (Interfaz web).

Para crear un usuario con clave, ejecutamos lo siguiente.

Debemos añadir ciertas reglas a nuestro firewall para restringir el acceso de otros servidores MongoDB a nuestra IP.

Repetimos este proceso en los otros servidores MongoDB. Si estamos utilizando PHP, necesitaremos instalar el módulo MongoDB para PHP.

Rellenar la base de datos con datos

Ahora empezaremos a testear nuestra configuración. Podemos acceder a la base de datos por medio de la línea de comandos ejecutando la instrucción “mongo”.

Añadimos una serie de registros para hacer las pruebas.

Mostramos todos los resultados.

Nosotros deberíamos poder ver los mismos resultados tanto en mongodb2 como en mongodb3 ya que la información está replicada.

Como hemos comentado anteriormente, para optimizar las consultas es recomendable limitar los registros devueltos y los campos. En el caso de que sólo quisiéramos que nos devolvieran dos registros, lo podríamos hacer de la siguiente manera.

 

Published inComunicados

Be First to Comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *