MongoDB desde Cero: Introducción e Instalación

Publicado el 17 septiembre 2013 por Codehero @codeheroblog

¿Qué es MongoDB?

Es una base de datos NoSQL de código abierto, este tipo de soluciones se basan en el principio de almacenar los datos en una estructura tipo llave-valor; MongoDB por su lado se enfoca específicamente en que los valores de estas llaves (llamadas colecciones) son estructuras tipo JSON (llamados documentos), es decir objetos Javascript, lenguaje sobre el cual se basa esta solución de base de datos. Esto facilitará su manipulación a muchos que ya conozcan el lenguaje.

MongoDB posee varias estrategias de manejo de datos que la han posicionado donde se encuentra hoy en día, tales como sus procesos de división de datos en distintos equipos físicos o también conocido como clusterización, también el caso similar de documentos muy grandes que superen el limite estipulado de 16MB se aplica una estrategia llamada GridFS que automáticamente divide el documento en pedazos y los almacena por separado, al recuperar el documento el driver se encarga de armar automáticamente el documento nuevamente.

La estructura de almacenamiento es tan flexible que uno de los hechos importantes que se comparten al introducir esta base de datos es que:

Distintos documentos en la misma colección no deben tener obligatoriamente los mismos campos o estructura. Inclusive documentos con campos en común no tienen necesariamente que tener el mismo tipo de dato.


¿Cómo lo instalo?

Bien, ya estamos ansiosos y desesperados, procedamos con la instalación.

Mac OS X

Si haz leído varios de nuestros Cómo Lo Hago, sabrás que el método por excelencia para instalar en Mac OS X es… Homebrew:

$ brew install mongodb

1 $brew install mongodb

Para gestionar el servicio de MongoDB basta con ejecutar:

$ brew services [ start | stop | restart ] mongodb

1 $brew services[start|stop|restart]mongodb

Sistemas basados en Debian

Primero debemos importar la llave pública GPG y crear el archivo de fuentes:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 ... $ echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list ...

1234 $sudo apt-key adv--keyserver keyserverubuntucom--recv7F0CEB10$echo'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen'|sudo tee/etc/apt/sourceslistd/mongodblist

Ahora actualizamos los repositorios e instalamos MongoDB:

$ sudo apt-get update ... $ sudo apt-get install mongodb-10gen ...

1234 $sudo apt-get update$sudo apt-get install mongodb-10gen

Para gestionar el servicio de MongoDB basta con ejecutar:

$ sudo service mongodb [ start | stop | restart | status ]

1 $sudo service mongodb[start|stop|restart|status]

ó

$ sudo /etc/init.d/mongodb [ start | stop | restart ]

1 $sudo/etc/initd/mongodb[start|stop|restart]

Sistemas Fedora, CentOS y RedHat

Para estos sistemas de igual manera se recomienda instalar MongoDB usando un manejador de paquetes, en este caso YUM. Para esto debemos primero crear el archivo /etc/yum.repos.d/10gen.repo para configurar el repositorio.

Si tu sistema es de 32bit le agregaremos al archivo lo siguiente:

[10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686 gpgcheck=0 enabled=1

12345 [10gen]name=10genRepositorybaseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686gpgcheck=0enabled=1

ó si es de 64bit:

[10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 gpgcheck=0 enabled=1

12345 [10gen]name=10genRepositorybaseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64gpgcheck=0enabled=1

Luego procedemos a instarlo ejecutando el comando:

$ yum install mongo-10gen mongo-10gen-server

1 $yum install mongo-10genmongo-10gen-server

Para gestionar el servicio de MongoDB basta con ejecutar:

$ sudo service mongod [ start | stop | restart | status ]

1 $sudo service mongod[start|stop|restart|status]

Windows

Dirigete a la página de oficial de MongoDB y descarga el comprimido según la arquitectura de tu sistema operativo.

A partir de la versión 2.2, MongoDB no es compatible con Windows XP.

Si tienes Windows Server 2008 o 7, debes instalar esta actualización para evitar un problema conocido con archivos mapeados en memoria.

Luego lo descomprimiremos y, según las recomendaciones, creamos un directorio mongodb en el directorio raíz C: donde colocaremos el contenido del comprimido, luego crearemos en C: un directorio data y dentro de este un directorio db, aquí será donde MongoDB almacenará la información de las bases de datos.

Para hacer que MongoDB funcione como un servicio primero crea el directorio log dentro de C:\mongodb\ y luego ejecutaremos el siguiente comando para crear el archivo de configuración asociado:

$ echo logpath=C:\mongodb\log\mongo.log > C:\mongodb\mongod.cfg

1 $echo logpath=C:\mongodb\log\mongolog>C:\mongodb\mongodcfg

Luego instalemos el servicio:

$ C:\mongodb\bin\mongod.exe --config C:\mongodb\mongod.cfg --install

1 $C:\mongodb\bin\mongodexe--configC:\mongodb\mongodcfg--install

Ahora para gestionar el servicio de MongoDB basta con ejecutar:

$ net [ start | stop ] MongoDB

1 $net[start|stop]MongoDB


¿Cómo lo configuro?

Buscaremos y editaremos el archivo de configuración.

Mac OS X

/usr/local/etc/mongod.conf

1 /usr/local/etc/mongodconf

Sistemas Debian, Fedora, CentOS y RedHat

/etc/mongodb.conf

1 /etc/mongodbconf

Windows

C:\mongodb\mongod.cfg

1 C:\mongodb\mongodcfg

Hablemos de algunas de las variables de mayor uso en este archivo.

  • port especificación del puerto donde escucha la base de datos.
  • bind_ip permite delimitar especificamente qué IPs pueden interactuar con la base de datos.
  • maxConns cantidad máxima de conexiones que serán aceptados, el valor por defecto depende de la cantidad de descriptores de archivos que maneja el sistema operativo.
  • objcheck habilitado por defecto, obliga a mongod a verificar cada petición para asegurar que la estructura de los documentos que insertan los clientes sea siempre válida. Cabe destacar que para documentos complejos esta opción puede afectar un poco el rendimiento.
  • fork inhabilitado por defecto, permite ejecutar mongod como un daemon.
  • auth inhabilitado por defecto, permite limitar el acceso remoto a la base de datos al implementar un mecanismo de autenticación.
  • dbpath especifica el directorio donde la instancia de base de datos almacena toda su información.
  • directoryperdb inhabilitado por defecto, ofrece la opción de que la información de cada base de datos presente en la instancia se almacene en carpetas separadas.
  • journal al habilitarse permite que las operaciones realizadas sobre la data sean almacenadas en una bitácora para en caso de ocurrir una falla, el sistema sea capaz de reconstruir la información que haya podido perderse.
  • smallfiles inhabilitado por defecto, ofrece la opción de que los archivos creados sean más pequeños y, por ende, más fáciles de entender, procesar y monitorear en varias ocasiones.
  • syncdelay especifica el lapso en segundos que tardará la instancia en pasar la información en la bitácora a persistencia.

También se ofrecen varias opciones para el uso de SSL, configuración de replicación y clusterización lo cual tocaremos a medida que avance el curso.


Conclusión

Esta semana vimos solo un abreboca de lo que es capaz MongoDB, lo instalamos y vimos algunos detalles sobre su configuración, que la desesperación no te impida llegar a la semana que viene para aprender a utilizarlo. Hasta entonces.