Guia-tutorial MongoDB: gran rendimiento y escalabilidad

guia y tutorial mongo db javascript

Tutoriales anteriores de nuestro proyecto:

  1. Introducción: Mean Stack
  2. Guia tutorial Node.JS
  3. Guia-tutoria Express
  4. Guia-tutorial MongoDB
  5. Desarrollando nuestro proyecto

 

MongoDB

MongoDB es un motor de bases de datos documental de código abierto que ofrece un gran rendimiento y escalabilidad. Las bases de datos documentales como MongoDB, prescinden de los complejos esquemas de las bases de datos relacionales tradicionales, sacrificando esta integridad referencial por un rendimiento, escalabilidad y facilidad de desarrollo.

 

En MongoDB no hay tablas, filas y campos, sólo documentos. Estos tienen índices pero estos documentos son independientes entre sí y contienen toda la información necesaria del objeto que representan.

 

Los documentos de MongoDB son similares a los objetos JSON. Siguiendo con nuestro proyecto de la guia-tutorial de Express:

{

“_id” : ObjectId(“78f780954b7c8ea31de89e9”), “direccion” : {

“calle” : “Serrano”, “zipcode” : “28020”, “edificio” : “3”,

“coord” : [ -3.12342, 40.52422 ]

},

“habitaciones” : 4,

“garaje” : “Si”, “precios” : [

{“date” : ISODate(“2017-10-01T00:00:00Z”), “valor” : 490000

“modalidad” : “Venta”

},

{“date” : ISODate(“2017-01-16T00:00:00Z”), “valor” : “1500”,

“modalidad” : “Alquiler”}

],

“cliente_id” : “194929”, “inmueble_id” : “184722”

}

MongoDB almacena documentos en colecciones. Las colecciones son un concepto similar a las tablas en las bases de datos relacionales. De hecho, para ser almacenados en colecciones, los documentos deben tener un campo único _id que actúa a modo de clave primaria.

 

Vamos a instalar MongoDB Community Edition en Linux Ubuntu 14.04:

 

Primer paso: Importamos la clave pública del repositorio

#:> sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 0C49F3730359A14518585931BC711F9BA15703C6

 

Una vez importada la clave, vamos:

#:> echo “deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Esto nos añadirá el repositorio de mongodb-org a nuestros orígenes de software. Ahora debemos ejecutar apt-get update para actualizar este nuevo repositorio.

#:> sudo apt-get update

Una vez hecho esto, instalamos con

#:> sudo apt-get install -y mongodb-org

A estas alturas, ya deberíamos tener el daemon de MongoDB corriendo en el sistema, pero si no es así, levanta el servicio con:

#:> sudo service mongod start

La instancia de MongoDB, almacena sus datos en /var/lib/mongodb y los logs se pueden encontrar en /var/log/mongodb por defecto. El servicio corre con la cuenta de usuario mongodb.

Para verificar que el servicio se ha iniciado sin incidencias, podemos echar un vistazo a /var/log/mongodb/mongod.log donde deberíamos tener una última línea como esta:

NETWORK     [thread1] waiting for connections on port 27017

 

El Puerto por defecto en el que escucha MongoDB es el 27017

 

Para parar y reiniciar el servicio, podemos usar la orden service mongod stop y service mongod restart respectivamente.

 

Vamos a descargar un dataset de ejemplo y lo vamos a importar en una base de datos de nuestra instancia. Para ello desde el terminal y desde el direcotrio de nuestro nuevo proyecto nodejs-express:

#:> wget -qO- https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json >> dataset.json

 

Con wget obtenemos el recurso remoto y lo redirigimos a un fichero dataset.json en el directorio actual.

 

Asegúrate que no tienes ya una instancia de MongoDB con una base de datos test, ya que el siguiente comando importará todos los registros del fichero en la base de datos “test” y primero vaciará dicha base datos antes de insertar los registros:

#:> mongoimport –db test –collection restaurants –drop –file dataset.json

El resultado se puede ver en la siguiente imagen:

Resultado Mongo Tutorial

Ahora vamos a abrir la consola de mongo para poder hacer solicitudes a nuestras bases de datos y documentos.

 

Para ello, desde la consola, tecleamos:

#:> mongo

Veremos que después de una serie de mensajes de inicialización, nos aparece un prompt. Aquí podemos teclear help para ver ayuda sobre los comandos que admite nuestro mongo Shell.

La Shell de mongo tiene una serie de helpers para poder realizar las operaciones más frecuentes. Este es el modo interactivo, pero existe también el modo Script. Ambos pueden ser utilizados desde la Shell, aunque los helper son mucho más rápidos de usar. Pero los helpers no pueden ser usados dentro de un script. AL contrario, la Shell sí que admite comandos de script.

Con la mongo Shell abierta, vamos a realizar algunas operaciones sencillas de uno y otro modo, con helpers, Shell mode:

> show dbs Resultado:

admin 0.000GB

local 0.000GB

test 0.005GB

 

Con JavaScript:

> conn = new Mongo();

> db = conn.getDB(“test”);

> adminCommand(‘listDatabases’)

 

Resultado:

{

“databases” : [

{

 

“name” : “admin”, “sizeOnDisk” : 49152, “empty” : false

},

{

 

“name” : “local”, “sizeOnDisk” : 32768, “empty” : false

},

{

 

“name” : “test”, “sizeOnDisk” : 4890624, “empty” : false

}

],

 

“totalSize” : 4972544, “ok” : 1

 

}

 

Con helpers, Shell mode, nos conectamos la base de datos test:

> use test

 

Resultado: test

 

Con JavaScript:

> db.getSiblingDB(‘test’)

Resultado: test

 

Como vemos, podemos realizar operaciones desde nuestro programa o desde la shell de mongo, usando Javascript en el primer caso y tanto helpers como Javascript en el segundo.

 

Si te ha parecido interesante este tutorial, ¡no dudes en compartirlo en las redes sociales! Desde Digital Tech Institute, te formamos en Full Stack Development para hacerte avanzar en tu carrera profesional, ¡No dejes de aprender!

Port Relacionados

Déjanos un comentario

Debes estarconectado/a para publicar un comentario.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies