You are on page 1of 8

VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

FORMATO DE INFORME DE PRÁCTICA DE LABORATORIO / TALLERES /


CENTROS DE SIMULACIÓN – PARA ESTUDIANTES

CARRERA: Ciencias de la computación ASIGNATURA: Fundamentos de bases de datos


NRO. PRÁCTICA: 9 TÍTULO PRÁCTICA: Instalación de MongoDB Server y MongoDB Compass en Linux y
Creación de una base de datos documental
OBJETIVO ALCANZADO: Investigar sobre los tipos de bases de datos NoSQL.
Instalación de MongoDB 4.0 en Ubuntu16.04
ACTIVIDADES DESARROLLADAS
1.Investigacion de los tipos de bases de datos NoSQL
Las bases de datos NoSQL, permiten almacenar información en aquellas situaciones en las que las bases de
datos relacionales generan ciertos problemas debido principalmente a problemas de escalabilidad y rendimiento
de las bases de datos relacionales donde se dan cita miles de usuarios concurrentes y con millones de consultas
diarias.

Tipos de bases de datos NoSQL

• Bases de datos clave/valor


Un HashMap o una matriz asociativa es la estructura de datos más simple que puede contener un conjunto de
(clave/valor) pares. La clave de un par (clave/valor) es un valor único que apunta a un elemento.
Los pares (clave/valor) son de varios tipos: algunos mantienen los datos en la memoria y otros proporcionan la
capacidad para persistir los datos en el disco. Los pares clave / valor se pueden distribuir y mantener en un clúster
de nodos. (Tiwari, 2011, p.14)

El almacén de clave-valor (KV) es el modelo más simple, como su nombre lo indica, una tienda KV empareja las
claves de los valores de forma muy parecida a como lo haría un mapa (o hashtable). Algunas implementaciones de
KV permiten tipos de valores complejos como hash o listas, pero esto no es obligatorio. Algunas implementaciones
de KV proporcionan un medio para iterar a través de las claves, pero esto de nuevo es una ventaja adicional. Un
sistema de archivos podría considerarse un almacén de clave-valor, si se piensa en la ruta del archivo como la
clave y el contenido del archivo como el valor. (Redmon & R. Wilson, 2012, p.4)

Clave Valores
Juan {Cuenca, Av. Loja, Don Bosco}

Sam {Quito, Av. Amazonas, S/N}

Ana {Cuenca, Av. Los Andes, Altiplano}

Bases de datos de este tipo: Cassandra (Apache), Big Table (Google) o HBase (Java-Apache).

• Bases de datos documentales


Las bases de datos documentales no son sistemas de gestión de documentos. Las bases de datos de documentos
tratan un documento como un todo y evitan dividir un documento en sus constituyentes pares (nombre/valor). A
nivel de colección, esto permite armar un conjunto diverso de documentos en una sola colección. Las bases de
Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 1 de 8
VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

datos de documentos permiten la indexación de documentos sobre la base de no solo su identificador primario,
pero también sus propiedades. Algunas bases de datos de documentos de código abierto son diferentes disponible
hoy, pero las más destacadas entre las opciones disponibles son MongoDB y CouchDB. (Tiwari, 2011, p.18)

Las bases de datos orientadas a documentos almacenan, documentos. En resumen, un documento es como un
hash, con un campo de ID único y valores que pueden ser de una variedad de tipos, incluyendo más hashes. Los
documentos pueden contener estructuras anidadas, por lo que muestran un alto grado de flexibilidad, lo que permite
dominios variables. El sistema impone pocas restricciones a los datos entrantes, siempre que se reúna el requisito
básico de ser expresable como documento. (Redmon & R. Wilson, 2012, p.5-6)

{ ID Nombre Apellido Edad


1 Juan Sánchez 30
“ID”:1,

“Nombre”: Juan, 2 Ana Loja 22


“Apellido”: Sánchez,

“Edad”: 30

Bases de datos que usan este tipo: MongoDB (MongoDB, Inc), CouchDB (Apache).

• Bases de datos en grafo


Uno de los estilos de bases de datos menos utilizados, las bases de datos de gráficos se destacan en tratar con
datos altamente interconectados. Una base de datos de gráficos consta de nodos y relaciones entre nodos. Ambos
nodos y relaciones pueden tener pares propiedades-valor-clave-que almacenan datos. La fuerza real del gráfico
las bases de datos se atraviesan a través de los nodos siguiendo las relaciones. (Redmon & R. Wilson, 2012, p.6)

Las bases de datos de gráficos son las más especializadas de las cuatro bases de datos NoSQL discutidas en este
libro. En lugar de modelar datos usando columnas y filas, una base de datos de gráficos usa estructuras
llamados nodos y relaciones (en discusiones más formales, se llaman vértices y
bordes). Un nodo es un objeto que tiene un identificador y un conjunto de atributos. Una relación es una
enlace entre dos nodos que contienen atributos sobre esa relación. (Sullivan, 2015, 76)

Bases de datos orientada a grafos: Neo4J (Neo Technology), FlockDB(Twitter).

Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 2 de 8


VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

2. Instalación de MongoDB y verificación de la instalación


La instalación de MongoDB se la realizó en Linux en su distribución Ubuntu 16.04 (Xenial Xerus)

1. Se importa la clave pública utilizada por el sistema de gestión de paquetes.


sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 –recv
9DA31620334BD75D9DCB49F368818C72E52529D4

• Resultado
Executing: /tmp/tmp.qmrt74CHIr/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv
9DA31620334BD75D9DCB49F368818C72E52529D4
gpg: requesting key E52529D4 from hkp server keyserver.ubuntu.com
gpg: key E52529D4: public key "MongoDB 4.0 Release Signing Key
<packaging@mongodb.com>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)

2. Crea un archivo de lista para MongoDB.


El comando echo muestra en pantalla que el archivo .deb de MongoDB tiene la estructura amd64 y que se descarga
del repositorio de MongoDB en su versión 4.0 y para Linux Xenial. Con el comando tee se copian los datos de la
entrada estándar a al archivo de salida.

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-


org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

• Resultado
deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-
org/4.0 multiverse

3. Recargar la base de datos del paquete local, actualiza la lista de repositorios


sudo apt-get update

• Resultado
Hit:1 http://ec.archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://ec.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:3 http://ec.archive.ubuntu.com/ubuntu xenial-backports InRelease
Get:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
Ign:5 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 InRelease
Get:6 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 Release
[3.457 B]
Get:7 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 Release.gpg
[801 B]
Get:8 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse
amd64 Packages [2.143 B]
Get:9 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse
arm64 Packages [2.146 B]
Fetched 115 kB in 1s (57,7 kB/s)
Reading package lists... Done

Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 3 de 8


VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

4. Instala los paquetes MongoDB junto con la última versión de MongoDB


sudo apt-get install -y mongodb-org

El paquete mongodb-org es un meta paquete que instalará automáticamente los cuatro paquetes de
componentes enumerados a continuación.

mongodb-org-server Contiene el ‘demonio’ mongod y las secuencias de comandos de configuración e init


asociadas.

mongodb-org-mongos Contiene el ‘demonio’ mongos.

mongodb-org-shell Contiene el intérprete de comandos de mongo.

mongodb-org-tools Contiene las siguientes herramientas de MongoDB:

-mongoimport bsondump
La herramienta mongoimport importa contenido de una exportación extendida de JSON, CSV o TSV
creada por mongoexport, o potencialmente, por otra herramienta de exportación de terceros.

-Mongodump
Es una utilidad para crear una exportación binaria de los contenidos de una base de datos. mongodump
puede exportar datos de instancias mongod o mongos.

-Mongoexport
Es una utilidad que produce una exportación JSON o CSV de datos almacenados en una instancia de
MongoDB.

-Mongofiles
La utilidad mongofiles hace posible manipular archivos almacenados en su instancia de MongoDB en
objetos GridFS desde la línea de comandos.

-Mongorestore
El programa mongorestore carga datos de un volcado de base de datos binario creado por mongodump o
de la entrada estándar (comenzando en la versión 3.0.0) en una instancia de mongod o mongos.

-Mongostat
La utilidad mongostat proporciona una descripción general rápida del estado de una instancia de mongod
o mongos actualmente en ejecución.

-mongotop.
Proporciona un método para rastrear la cantidad de tiempo que una instancia de MongoDB pasa leyendo
y escribiendo datos.

• Resultado
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
The following NEW packages will be installed:
mongodb-org mongodb-org-mongos mongodb-org-server mongodb-org-shell
mongodb-org-tools
0 upgraded, 5 newly installed, 0 to remove and 249 not upgraded.
Need to get 55,7 MB of archives.
Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 4 de 8
VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

After this operation, 242 MB of additional disk space will be used.


Get:1 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse
amd64 mongodb-org-shell amd64 4.0.0 [9.566 kB]
Get:2 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse
amd64 mongodb-org-server amd64 4.0.0 [15,5 MB]
Get:3 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse
amd64 mongodb-org-mongos amd64 4.0.0 [8.667 kB]
Get:4 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse
amd64 mongodb-org-tools amd64 4.0.0 [22,0 MB]
Get:5 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0/multiverse
amd64 mongodb-org amd64 4.0.0 [3.518 B]
Fetched 55,7 MB in 26s (2.141 kB/s)
Selecting previously unselected package mongodb-org-shell.
(Reading database ... 176239 files and directories currently installed.)
Preparing to unpack .../mongodb-org-shell_4.0.0_amd64.deb ...
Unpacking mongodb-org-shell (4.0.0) ...
Selecting previously unselected package mongodb-org-server.
Preparing to unpack .../mongodb-org-server_4.0.0_amd64.deb ...
Unpacking mongodb-org-server (4.0.0) ...
Selecting previously unselected package mongodb-org-mongos.
Preparing to unpack .../mongodb-org-mongos_4.0.0_amd64.deb ...
Unpacking mongodb-org-mongos (4.0.0) ...
Selecting previously unselected package mongodb-org-tools.
Preparing to unpack .../mongodb-org-tools_4.0.0_amd64.deb ...
Unpacking mongodb-org-tools (4.0.0) ...
Selecting previously unselected package mongodb-org.
Preparing to unpack .../mongodb-org_4.0.0_amd64.deb ...
Unpacking mongodb-org (4.0.0) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up mongodb-org-shell (4.0.0) ...
Setting up mongodb-org-server (4.0.0) ...
Adding system user `mongodb' (UID 121) ...
Adding new user `mongodb' (UID 121) with group `nogroup' ...
Not creating home directory `/home/mongodb'.
Adding group `mongodb' (GID 129) ...
Done.
Adding user `mongodb' to group `mongodb' ...
Adding user mongodb to group mongodb
Done.
Setting up mongodb-org-mongos (4.0.0) ...
Setting up mongodb-org-tools (4.0.0) ...
Setting up mongodb-org (4.0.0) …

5. Correr MongoDB COMMUNITY EDITION


sudo service mongod start
Como super usuario levanta un demonio llamado mongod y con start lo arranca

6. Verificar que MongoDB ha iniciado correctamente


mongo --host 127.0.0.1:27017
Se inicia MongoDB en la dirección local del computador con el puerto 27017.

Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 5 de 8


VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

2018-07-19T09:18:18.094-0500 I NETWORK [initandlisten] waiting for


connections on port 27017
Esta línea nos confirma que se ha iniciado correctamente

3. Realizando inserción y consultas de documentos


• Iniciamos MongoDB con la instrucción mongo en la terminal de comandos, para luego consultar las bases
de datos disponibles con el comando show dbs
>show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB

• Usamos la base de datos test


>use test
switched to db test

• Insertamos un documento
>db.restaurants.insert(
... {
... "address" : {
... "street" : "2 Avenue",
... "zipcode" : "10075",
... "building" : "1480",
... "coord" : [ -73.9557413, 40.7720266 ]
... },
... "borough" : "Manhattan",
... "cuisine" : "Italian",
... "grades" : [
... {
... "date" : ISODate("2014-10-01T00:00:00Z"),
... "grade" : "A",
... "score" : 11
... },
... {
... "date" : ISODate("2014-01-16T00:00:00Z"),
... "grade" : "B",
... "score" : 17
... }
... ],
... "name" : "Restaurant Vella",
... "restaurant_id" : "41704620"
... }
... )
WriteResult({ "nInserted" : 1 })
Con esta línea, la inserción se realizó correctamente

Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 6 de 8


VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

• Otro documento
>db.restaurants.insert(
... {
... "address" : {
... "street" : "Tomas de Heres",
... "zipcode" : "01011566",
... "building" : "1130",
... "coord" : [ -2.8885206,-78.9910242 ]
... },
... "borough" : "Ciudad Cuenca",
... "cuisine" : "Cocina Morlaca",
... "grades" : [
... {
... "date" : ISODate("2014-10-01T00:00:00Z"),
... "grade" : "A",
... "score" : 111
... },
... {
... "date" : ISODate("2014-01-16T00:00:00Z"),
... "grade" : "B",
... "score" : 17
... }
... ],
... "name" : "Restaurante El Cuencano",
... "restaurant_id" : "41704621"
... }
... )
WriteResult({ "nInserted" : 1 })
Inserción realizada

• Consultamos la base de datos test que contiene en sus colecciones a restaurants


>use test
switched to db test
>show collections
restaurants

• Realizamos una consulta


>db.restaurants.find()
{ "_id" : ObjectId("5b50a33284c7bc31d8b86432"), "address" : { "street" : "2
Avenue", "zipcode" : "10075", "building" : "1480", "coord" : [ -73.9557413,
40.7720266 ] }, "borough" : "Manhattan", "cuisine" : "Italian", "grades" :
[ { "date" : ISODate("2014-10-01T00:00:00Z"), "grade" : "A", "score" : 11 },
{ "date" : ISODate("2014-01-16T00:00:00Z"), "grade" : "B", "score" : 17 } ],
"name" : "Restaurant Vella", "restaurant_id" : "41704620" }

{ "_id" : ObjectId("5b50a34584c7bc31d8b86433"), "address" : { "street" :


"Tomas de Heres", "zipcode" : "01011566", "building" : "1130", "coord" : [ -
2.8885206, -78.9910242 ] }, "borough" : "Ciudad Cuenca", "cuisine" : "Cocina
Morlaca", "grades" : [ { "date" : ISODate("2014-10-01T00:00:00Z"), "grade" :
"A", "score" : 111 }, { "date" : ISODate("2014-01-16T00:00:00Z"), "grade" :
Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 7 de 8
VICERRECTORADO DOCENTE Código: GUIA-PRL-001

CONSEJO ACADÉMICO Aprobación: 2016/04/06

Formato: Guía de Práctica de Laboratorio / Talleres / Centros de Simulación

"B", "score" : 17 } ], "name" : "Restaurante El Cuencano", "restaurant_id" :


"41704621" }

• Y para realizar una consulta con parametros se sigue la siguiente sintaxis

>db.restaurants.find( { "borough": "Manhattan" } )


{ "_id" : ObjectId("5b50a33284c7bc31d8b86432"), "address" : { "street" : "2
Avenue", "zipcode" : "10075", "building" : "1480", "coord" : [ -73.9557413,
40.7720266 ] }, "borough" : "Manhattan", "cuisine" : "Italian", "grades" :
[ { "date" : ISODate("2014-10-01T00:00:00Z"), "grade" : "A", "score" : 11 },
{ "date" : ISODate("2014-01-16T00:00:00Z"), "grade" : "B", "score" : 17 } ],
"name" : "Restaurant Vella", "restaurant_id" : "41704620" }

Referencias:
- Shashank Tiwari. (2011). Professional NoSQL. Indiana: John Wiley & Sons, Inc.
- Eric Redmon & Jim R. Wilson. (2012). Seven Databases in Seven Weeks Texas: Pragmatic Programmers.
- Dan Sullivan. (2015). NoSQL for Mere Mortals. Massachusetts: Addison-Wesley.
RESULTADO(S) OBTENIDO(S): Lograr la instalación exitosa de MongoDB en Ubuntu16.04, mediante la
aplicación de las instrucciones brindadas en la guía de practica

CONCLUSIONES: Lograr comprender el funcionamiento de MongoDB, junto con las operaciones CRUD las
cuales son creación, inserción, consulta y eliminación de documentos.
RECOMENDACIONES: Instalar la versión comprobada de MongoDB y para la versión correcta de Ubuntu, ya
que podrían surgir problemas de compatibilidad o uso en las versiones incorrectas.

Nombre de estudiante: Francis Córdova Nombre de estudiante: David Cornejo

Firma de estudiante: Firma de estudiante:

Nombre de estudiante: Stalin Figueroa Nombre de estudiante: Jorge Pizarro

Firma de estudiante: Firma de estudiante:

Formato aprobado con Res. C.S. N° 076-04-2016-04-20 Página 8 de 8

You might also like