sábado, 20 de mayo de 2017

Servidor MongoDB y datos de prueba



Instalacion MongoDB
Crear el directorio de datos, p.e. c:\mongodb
Instalar el servidor de mongo
Instalar robomongo
Buscar el servidor mongod, generalmente en C:\Program Files\MongoDB\Server\3.4\bin
Ejecutar mongod –dbpath “%rutaDeDatos%”.
mongod --dbpath "c:\mongodb"
Si todo esta bien el servidor se queda esperando conexiones en el puerto 27017

-----Ejecutar robomongo y crear una nueva conexión en localhost:27017
En New Connection, botón derecho y Create Database. Nombrar la base de datos, p.e. librería
Abrir el fichero .js correspondiente desde la pestaña de la imagen y ejecutar con el botón execute de la interfaz

Ficheros de prueba: Servidor Mega


Prácticas de Bases de Datos Avanzadas MongoDB
Se pide resolver sobre la base de datos de libros las siguientes consultas en MongoDB:
  1. Obtener todos los autores
db.libros.find({},{'autor':1, _id:0})

db.libros.find( {
},
{‘autor:1, _id:0}
)

2.                  Obtener los autores cuyo apellido sea DATE
db.libros.find({'autor.apellidos':'DATE'},{'autor':1, '_id':0})

3. Obtener los libros editados en 1998 o en 2005
db.libros.find( {$or:[{"año": "1998", "año":"2007"}]}, {"autor":1, "_id":0} )

4.                  Obtener el número de libros de la editorial Addison‐Wesley
db.libros.find( {"editorial": "Addison-Wesley"}, {"autor":1, "_id":0} ).count()

5.                  Obtener el libro que ocupa la tercera posición
db.libros.find( {}, {"autor":1, "_id":0} ).skip(2).limit(1)

6.                  Obtener la lista de autores de cada libro junto con el título
db.libros.find( {}, {"autor":1, "titulo":1, "_id":0} ).pretty()

7.                  Obtener los títulos de libro publicados con posterioridad a 2004.
db.libros.find( {$or:[{"año":{$gt:"2005"}}, {"año":"2004"}]}, {"autor":1, "_id":0, "año":"1"} )

8. Obtener los libros editados en 1998 o en 2005
db.libros.find( {$or:[{"año":"2005"}, {"año":"1998"}]}, {"autor":1, "_id":0, "año":"1"} )

8.                  Obtener los libros editados desde 2001 y precio mayor que 50
db.libros.find({"año":{$gte:"2001"}, "precio":{$gte:50.00}}, {"autor":1, "_id":0, "año":"1", "precio":1} )

9.                  Obtener los libros publicados por la editorial Addison‐Wesley después de 2005.

db.libros.find({"editorial":"Addison-Wesley", "año":{$gte:"1995"}}, {"autor":1, "_id":0, "año":"1", "precio":1} )

11. Obtener el título de libro y editorial para aquellos libros que tengan un precio superior a
50€.
db.libros.find({"precio":{$gte:50}}, {"titulo":1, "editorial": 1, "precio":1} )
 
12. Obtener por cada libro, su título y el número de ediciones publicadas.
 db.libros.aggregate([{$group:{_id:"$titulo", numeroEdiciones:{$sum:1}}   }])
13. 13. Obtener los títulos de libro de los que conste más de una edición.
14. Realizar algunas de las operaciones anteriores ordenando el resultado por algún criterio.
15. Realizar, al menos, una operación de actualización.
16.- Obtener los libros publicados en 1998 o a partir de 2005.
db.libros.find( {$or:[{"año":{$gt:"2005"}}, {"año":"1998"}]} ,{"titulo":1, "año":1})

db.libros.find( {"año":{$gt:"1998"}}, {"autor":1, "_id":0} )

MySQL Servidor e instrucciones de instalacion



Instalacion de MySQL
La descarga del servidor se encuentra en el siguiente enlace:
Usamos tres herramientas de software libre:
Komodo Edit (versión gratuita, para edicion)
Notepad ++, gratuito, para edición.
7Zip (herramienta para descomprimir).
Llamamos” %RutaMySQL%” al directorio donde descomprimimos el fichero MySQL.rar, compuesto de nombre de disco y directorio, p.e. “D:”
Podemos descomprimirlo con una herramienta de software libre como 7zip.
Descomprimimos Mysql.rar a la “%RutaMysql%\”. No olvidar la barra final
Nos posicionamos en %RutaMysql\MySQL%.

Editamos el fichero my.ini.
Editamos la línea 93 y la cambiamos por “%RutaMysql%/MySQL/”. En el caso de haberlo descomprimido en D:\Mysql, ésta conincidiría con “D:\MySQL/” . No olvidar la barra final
Linea 93: “basedir=%RutaMySQL%MySQL\”
Linea 96: “datadir=%RutaMySQL%/MySQL\Data”
Linea 129: secure-file-priv="%RutaMySQL%/MySQL/Uploads"
Salvamos el fichero con el mismo nombre.

Editamos el fichero .BDAconfigServer.bat
Línea 1:%RutaMySQL\MySQL\bin\mysql –initialize-insecure.
Ej: Si descomprimimos en D:, quedará como: “D:\MySQL3\bin\mysqld --initialize-insecure”
Ejecutamos el fichero “1.BDAconfigServer.bat” y observamos que en %RutaMySQL% se ha creado el Directorio Data.
La configuración de este zip se ha puesto por defecto en el puerto 3309. Normalmente MysQL levanta el puerto 3306, por lo que si lo queremos así, debemos cambiar esta variable en ese fichero

Vamos a la consola de Windows y nos posicionamos en: %RutaMySQL%\MySQL\bin
Ejecutamos : Mysqld.
Esta ventana se quedará bloqueada. Es la ventana del servidor que está esperando conexiones.
Abrimos otra ventana de comandos y en la misma ruta ejecutamos: 
mysqladmin –u root shutdown.
Vemos que la primera ventana se ha desbloquedo, lo que quiere decir que el servidor se ha parado y que todo funciona correctamente.
Volvemos a la primera ventana y arrancamos el servidor con mysqld.
En la segunda ventana ejecutamos: 
mysql –u root.
Nos aparece el prompt de mysql  esperando comandos sql. Esto es: mysql>
Crear un esquema: Create schema  test;
Pasar al esquema: use test;
Crear una tabla: create table primera (ident integer, descrip char(30));
Insertar datos insert into primera values (1, "Descripcion 1");

viernes, 19 de mayo de 2017

Ejercicios Resueltos MongoDB



/*
En progreso ...
Insertar el fichero XML 
Acabar las consultas
//*/
MongoDB
Crear el fichero de datos
Buscar el servidor mongod
Ejecutar mongod –dbpath “%ruta%”. Si todo esta bien el servidor se queda esperando

-----Ejecutar robomongo



Prácticas de Bases de Datos Avanzadas MongoDB
Se pide resolver sobre la base de datos de libros las siguientes consultas en MongoDB:
1.      Obtener todos los autores
db.libros.find({},{'autor':1, _id:0})

db.libros.find( {
},
{‘autor:1, _id:0}
)

2.      Obtener los autores cuyo apellido sea DATE
db.libros.find({'autor.apellidos':'DATE'},{'autor':1, '_id':0})

3.      Obtener los libros editados en 1998 o en 2005
db.libros.find( {$or:[{"año": "1998", "año":"2007"}]}, {"autor":1, "_id":0} )

4.      Obtener el número de libros de la editorial Addison‐Wesley
db.libros.find( {"editorial": "Addison-Wesley"}, {"autor":1, "_id":0} ).count()

5.      Obtener el libro que ocupa la tercera posición
db.libros.find( {}, {"autor":1, "_id":0} ).limit(1)

6.      Obtener la lista de autores de cada libro junto con el título
db.libros.find( {}, {"autor":1, "titulo":1, "_id":0} ).pretty()

7.      Obtener los títulos de libro publicados con posterioridad a 2004.
db.libros.find( {$or:[{"año":{$gt:"2005"}}, {"año":"2004"}]}, {"autor":1, "_id":0, "año":"1"} )

8. Obtener los libros editados en 1998 o en 2005
db.libros.find( {$or:[{"año":"2005"}, {"año":"1998"}]}, {"autor":1, "_id":0, "año":"1"} )

8.      Obtener los libros editados desde 2001 y precio mayor que 50
db.libros.find({"año":{$gte:"2001"}, "precio":{$gte:50.00}}, {"autor":1, "_id":0, "año":"1", "precio":1} )

9.      Obtener los libros publicados por la editorial Addison‐Wesley después de 2005.

db.libros.find({"editorial":"Addison-Wesley", "año":{$gte:"1995"}}, {"autor":1, "_id":0, "año":"1", "precio":1} )

11. Obtener el título de libro y editorial para aquellos libros que tengan un precio superior a
50€.
12. Obtener por cada libro, su título y el número de ediciones publicadas.
13. 13. Obtener los títulos de libro de los que conste más de una edición.
14. Realizar algunas de las operaciones anteriores ordenando el resultado por algún criterio.
15. Realizar, al menos, una operación de actualización.

db.libros.find( {"año":{$gt:"1998"}}, {"autor":1, "_id":0} )