Está en la página 1de 3
Universidad T´ecnica Federico Santa Mar´ıa Campus Santiago San Joaqu´ın Bases de Datos Avanzadas Primer Semestre

Universidad T´ecnica Federico Santa Mar´ıa Campus Santiago San Joaqu´ın Bases de Datos Avanzadas Primer Semestre 2017

Tarea 1: MongoDB

Abdel Sandoval Moreno 201573504-2 abdel.sandoval@sansano.usm.cl Ignacio Tampe Palma 201573514-k ignacio.tampe@sansano.usm.cl Franco Zalavari Palma 201573501-8 franco.zalavari@sansano.usm.cl

1. Conexi´on a la Base de Datos

Para comenzar a usar la base de datos, se mont´o en un servidor con acceso por DDNS y empleando RoboMongo GUI se empieza a utilizar la base de datos, creando una colecci´on para alojar los curri- culums:

USE

db.createCollection("curriculums")

tarea1

2. Cargar curriculums a la colec- ci´on

Para realizar el importe de los curriculums apa- reci´o el problema de que el comando mongoimport s´olo importa un documento a la vez, por lo que para poder realizar el importe de todos los documentos se realiz´o un comando bat el cual itera sobre los ar- chivos en el directorio actual e importa todo lo que tenga extensi´on “.json”.

@echo

off

for

%%f

in

(*.json)

do

(

mongoimport

--db

tarea1

 

--collection

curriculums

--file

"%%~nf.json"

)

3. Manejo de documentos

Se realizan diversas pruebas para interactuar con la base de datos, estas son:

Update:

db.curriculums.update(

{Nombre

:

$set:

"Rigoberto

{"Direccion":

Bravo"},{

"Avenida

siempre

viva

1314"}

})

Insert:

db.curriculums.insert({

"Resumen":

"Joven

de

poca

experiencia

pero

gran

disposici´on

de

aprender

nuevas

materias.

Conocimientos

en

Python

y

C.Ingles

de

nivel

medio.

Gusta

de

los

videojuegos

y

los

memes",

 

"Nombre":

"Rigoberto

Bravo",

"Fecha

de

nacimiento":

"17

de

Abril

de

1998",

"Direccion":

"Los

Dragones

de

la

Reina

656",

"Telefono":

90259310,

 

"Email":

[

"rigoberto.bravo@sansano.usm.cl"

],

"Redes

{

Sociales":

[

"Red":

"link":

"Facebook",

"https://www.facebook.com/rigo.jordinson"

 

}

],

"Formacion":

[

 

{

"EnsenanzaMedia":

"Colegio

Monteverde

Anexo",

"Termino":

2015

 

},

{

"EducacionSuperior":

"Universidad

Federico

 

Santa

Maria",

 

"Ingreso":

2016,

"Egreso":

2022

}

],

"Conocimientos":

[

 

"Python",

 

"C"

],

"Intereses

Personales":

[

 

"Memes",

 

"Videojuegos",

 

"F´utbol"

 

]

1

})

Cantidad muestral de CV db.curriculums.find().skip( Math .random() * tamanio) Universidad T´ecnica Federico Santa

Cantidad muestral de CV

db.curriculums.find().skip(Math.random()*tamanio)

Universidad T´ecnica Federico Santa Mar´ıa Campus Santiago San Joaqu´ın Bases de Datos Avanzadas Primer Semestre 2017

}

});

return

(

key

campo);

==

campo||

doc[key]

==

Conocimientos T´ecnicos m´as comunes

}

return

inspectDos(this);

db.curriculums.aggregate(

[

 

{ $unwind

:

"$Conocimientos

Tecnicos"

},

{ $group

:

{

_id

:

"$Conocimientos

Tecnicos"

,

number

:

{

$sum

:

1

}

}

},

{ $sort

:

{

number

:

-1

}

},

{ $limit

:

10

}

 

]

)

 

Cantidad de redes sociales

 

db.curriculums.aggregate([

 
 

{$unwind:

'$Redes Sociales'},

 

{$group:

{_id:

'$Nombre',

'sum':

{

$sum:

1}}},

{

$sort

:

{

sum

 

:

-1

}

}

])

 

Intereses menos comunes

 

db.curriculums.aggregate(

 
 

[

 

{ $unwind

:

"$Intereses

Personales"

||

"$InteresesPersonales"

||

"Intereses"

},

{ $group

:

{

_id

:

"$Intereses

Personales"

||

"$InteresesPersonales"

||

"Intereses"

,

number

:

{

$sum

:

-1

}

}

},

{ {

$sort

:

number

:

-1

}

},

{ 5

$limit

:

}

])

Busqueda en profundidad

db.curriculums.find(

function

()

{

var

campo

=

"Nombre";

 

function

inspectDos(doc)

{

return

Object.keys(doc).some(function(key)

{

 

if

(

typeof(doc[key])

==

"Array"){

 

return

inspectDos(doc[key]);

 
 

}

else

if

(typeof(doc[key])

==

"object"){

 
 

if(key

==

campo||

doc[key]

==

campo){

 

return

(key

==

campo||

doc[key]

==

campo);

 
 

}

return

inspectDos(doc[key]);

 
 

}

else

{

)

4.

}

MongoDB

4.1. ¿Cu´ando trabajar con una base de datos documental?

Las bases de datos documentales son utiles´ cuando se debe trabajar con grandes cantidades de datos (big data), los cuales no tienen una es- tructura bien definida, por lo que no se pueden almacenar en un sistema de columnas como el de las bases de datos relacionales.

4.2. Ventajas

MongoDB cuenta con diversas ventajas entre las que es posible destacar:

Alta escalabilidad horizontal.con diversas ventajas entre las que es posible destacar: Modelo de registro flexible. Propiedades ACID a

Modelo de registro flexible.las que es posible destacar: Alta escalabilidad horizontal. Propiedades ACID a nivel de documento. Soporta la

Propiedades ACID a nivel de documento.Alta escalabilidad horizontal. Modelo de registro flexible. Soporta la replicaci´on de manera nativa. Alta

Soporta la replicaci´on de manera nativa.registro flexible. Propiedades ACID a nivel de documento. Alta disponibilidad. 4.3. Desventajas Migraci´on de datos

Alta disponibilidad.de documento. Soporta la replicaci´on de manera nativa. 4.3. Desventajas Migraci´on de datos toma mucho tiempo.

4.3. Desventajas

Migraci´on de datos toma mucho tiempo.de manera nativa. Alta disponibilidad. 4.3. Desventajas Se debe capacitar al personal para su co- rrecto

Se debe capacitar al personal para su co- rrecto manejo.Soporta la replicaci´on de manera nativa. Alta disponibilidad. 4.3. Desventajas Migraci´on de datos toma mucho tiempo.

2

4.4. Diferencias con el modelo relacional A diferencia de un sistema SQL est´andar, se prioriza

4.4. Diferencias con el modelo relacional

A diferencia de un sistema SQL est´andar, se prioriza la herencia de los datos, es decir, que los valores guardados est´an contenidos dentro de un objeto padre. Por los mismo no se nece- sita de consultas JOIN complejas para obtener datos asociados entre claves primarias y for´a- neas.

Como fue mencionado previamente, los datos no son estructurados por lo tanto no exige un modelo mandatorio para todos los elementos y se permite que, por ejemplo, falten campos o estos tengan distinto nombres.

3

Universidad T´ecnica Federico Santa Mar´ıa Campus Santiago San Joaqu´ın Bases de Datos Avanzadas Primer Semestre 2017