DRIVERS DE CONEXION 6.pdf
Document Details
Uploaded by Itan
Tags
Full Transcript
Tema 6 Métodos de Captura y Almacenamiento de los Datos Drivers de conexión © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 6.1. Introducción y objetivos 4 6.2. Referencias: dónde consultar cada driver 5 6.3. Ejemplos de uso 6 A fondo 15 Test 18 Len gu ajes C C++ C# Jav...
Tema 6 Métodos de Captura y Almacenamiento de los Datos Drivers de conexión © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 6.1. Introducción y objetivos 4 6.2. Referencias: dónde consultar cada driver 5 6.3. Ejemplos de uso 6 A fondo 15 Test 18 Len gu ajes C C++ C# Java Node.js Perl PHP Python Motor Ruby Scalar Go Erlang MongoDB puede integrarse con otros lenguajes de programación. Con exión Co nceptos © Universidad Internacional de La Rioja (UNIR) Neo4J Python 3 Java 2 1 Lenguajes de ejemplo pip install pymongo PyMongo npm install mongodb –sabe npm install bson-ext --save NPM org.mongodb mongodbdriver 3.4.2 Maven Ejemplos de uso DRIVERS DE CONEXIÓN Esquema Métodos de Captura y Almacenamiento de los Datos Tema 6. Esquema 3 Ideas clave 6.1. Introducción y objetivos Este tema pretende ser una pequeña guía para empezar a desarrollar aplicaciones utilizando MongoDB. Para estudiar este tema debes leer las Ideas clave y, si deseas información adicional sobre un concepto específico, puedes consultar los recursos sugeridos en A fondo. Se recomienda también intentar replicar los ejemplos y realizar las actividades para entender cada uno de los conceptos que se explican. Para que un desarrollador pueda acceder a los datos almacenados en MongoDB desde el lenguaje de programación utilizado, es necesario utilizar un driver que nos haga de enlace con la base de datos. Es por esta razón que una vez conocido cómo consultar y gestionar los datos, es hora de conocer cómo poder utilizarlos desde cualquier programa que se quiera desarrollar, independientemente del lenguaje de desarrollo utilizado. Existe un gran número de drivers que permiten trabajar con MongoDB, según el lenguaje de programación elegido. A lo largo de este tema se verán tres ejemplos de los tres más usados en aplicaciones de visualización y big data. Si se quiere empezar a desarrollar con algún otro, se proporciona un apartado de referencias que debe consultarse como punto de partida para conocer todos los drivers que MongoDB © Universidad Internacional de La Rioja (UNIR) proporciona, así como complementar la información de los tres drivers tratados. Para poder consultar, actualizar o insertar nuevos datos a una base de datos MongoDB a través de una aplicación programada en cualquier lenguaje de programación, es necesario tener un API que nos proporcione un enlace entre la base de datos y el código y nos permita utilizar aproximadamente las mismas funcionalidades que los utilizados desde la consola. Para ello, cada lenguaje de programación posee unos métodos o funciones que nos facilitan el desarrollo de Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 4 nuestra aplicación, utilizando para ello una conexión trasparente para el programador. Estas API nos proporcionan suficientes funcionalidades para tener un acceso total a los datos. Como cualquier otra API, cuando se está desarrollando un programa que debe acceder a una base de datos, lo que se busca es que las interfaces de conexión a dichas bases sean trasparentes para el programador. En definitiva, se encarga de «traducir» las llamadas que se hacen desde un lenguaje de programación a un «lenguaje» que entienda la base de datos. Los objetivos que se persiguen con este tema son los siguientes: Conocer los diferentes drivers que existen para MongoDB. Aprender el uso de los drivers más populares para usar MongoDB desde otras aplicaciones. 6.2. Referencias: dónde consultar cada driver MongoDB proporciona una descripción completa de cómo funciona cada uno de los drivers, que tienes disponible en el siguiente enlace. En esta página se pueden encontrar cursos, tutoriales y ejemplos para facilitar la construcción de aplicaciones que precisen de MongoDB para su funcionamiento. © Universidad Internacional de La Rioja (UNIR) A continuación, se enumera una lista de los drivers que hay disponibles: C Perl Scalar C++ PHP Go C# Python Erlang Java Motor Node.js Ruby Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 5 Además, la comunidad proporciona soporte para los siguientes drivers: Action Script3 F# Opa C Go Perl C# and.NET Groovy PHP Clojure Haskell PowerShell ColdFusion JavaScript Prolog D LabVIEW Python Dart Lisp R Delphi Lua Ruby Elixir Mathematica Scala Entity MatLab Swift Erlang Node.js Racket Factor Objetive C Smalltalk Fantom OCaml También MongoDB proporciona un conector para Hadoop. Este conector es un plugin que permite utilizar MongoDB como fuente de entrada y/o salida destino. 6.3. Ejemplos de uso Java © Universidad Internacional de La Rioja (UNIR) Para poder utilizar MongoDB en Java, es necesario bajarse las librerías que permiten utilizar la versión requerida. Para ello, MongoDB proporciona varios métodos. Los comandos para bajar las dependencias con Maven son las siguientes: org.mongodb mongodb-driver 3.4.2 Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 6 Otra alternativa es bajar los.jar de la fuente: https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongo-javadriver/3.4.2/ Para realizar los primeros ejemplos se recomienda descargar los siguientes archivos: mongo-java-driver-3.4.2-javadoc.jar: incluye la documentación. mongo-java-driver-3.4.2-source.jar: incluye las fuentes. mongo-java-driver-3.4.2.jar: incluye los diferentes métodos. Por defecto el driver de Java se conecta a localhost por el puerto 27017. Para conectarse a la base de datos con los parámetros por defecto: MongoClient mongoClient = new MongoClient(); Si la base de datos está en un host específico: MongoClient mongoClient = new MongoClient( "host1" ); Si está en un host específico con un puerto específico: MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://host1:27017")); © Universidad Internacional de La Rioja (UNIR) Una vez obtenido el objeto que conecta con MongoDB es necesario acceder a una base de datos específica: MongoDatabase database = mongoClient.getDatabase("test"); Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 7 Ya solo falta acceder a la colección: MongoCollection collection = database.getCollection("estudiantes"); Para ello, primero hay que conocer que en Java es necesario construir los documentos con una estructura específica. Si se tiene como ejemplo el siguiente documento: { “marca” : “BMW”, “puertas” : [3, 5] } En formato BSON de Java se crearía de la siguiente forma: new BsonDocument().append("marca", new BsonString("BMW")).append("puertas", new BsonArray(Arrays.asList(new BsonInt32(3), new BsonInt32(5)))); Por lo que una sencilla búsqueda se realizaría de la siguiente forma: collection.find(new Document("marca","BMW")) Si, por el contrario, lo que se pretende es insertar un documento, se podrá utilizar los métodos insertOne() e insertMany() que aceptan un documento o una lista de ellos. © Universidad Internacional de La Rioja (UNIR) Un ejemplo de insertOne es el siguiente: Document document = new Document("marca", "Audi").append("motor", new Document("CC", 3000).append("CV",210)).append("modelo", "A5").append("colores", Arrays.asList("rojo", "negro", "blanco")); collection.insertOne(document); Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 8 En la clase «Introducción del driver Java para MongoDB» se describe la instalación y breve introducción del driver Java para MongoDB. En este vídeo se enumeran los pasos para descargar e instalar el driver Java de MongoDB para realizar una aplicación Java con Eclipse. También encontrarás un breve ejemplo de cómo se puede realizar una conexión a la base de datos, así como realizar consulta y trabajar con los resultados de la query. Vídeo 1. Introducción del driver Java para MongoDB. Accede al vídeo a través del aula virtual Node.js Para empezar, la forma más fácil de conseguir los drivers de Node.js 2.0 es usando NPM (Node Package Manager). Nada más crear el proyecto con npm init, se pueden instalar los drivers de MongoDB y sus dependencias con el siguiente comando: © Universidad Internacional de La Rioja (UNIR) npm install mongodb --save Con ello se descargarán los drivers y se añadirá una dependencia en el archivo package.json. También se recomienda bajar la extensión bson-ext, ya que proporciona mejores formas de serialización y deserialización que el proporcionado por el parser JavaScript. Para instalar el driver es necesario ejecutar el siguiente comando: Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 9 npm install bson-ext --save Para conectarse al servidor y la base de datos basta con añadir las siguientes líneas de código: var MongoClient = require('mongodb').MongoClient , assert = require('assert'); // Connection URL var url = 'mongodb://localhost:27017/miProyecto'; // Use connect method to connect to the server MongoClient.connect(url, function(err, db) { assert.equal(null, err); console.log("Conexión realizada con éxito"); db.close(); }); La aplicación imprimirá «Conexión realizada con éxito» si se han establecido una URL válida. Un ejemplo de inserción de datos es el que se puede ver a continuación: var insertDocuments = function(db, callback) { // Get the documents collection var collection = db.collection('documents'); // Insert some documents collection.insertMany([ {a : 1}, {a : 2}, {a : 3} ], function(err, result) { assert.equal(err, null); assert.equal(3, result.result.n); © Universidad Internacional de La Rioja (UNIR) assert.equal(3, result.ops.length); console.log("Inserted 3 documents into the collection"); callback(result); }); } Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 10 El comando insert devuelve un objeto con los siguientes campos: result: contiene el documento resultado de MongoDB. ops: contiene el documento insertado con el campo _id añadido. connection: contiene la conexión utilizada para llevar a cabo el insert. Para llamar a la función insertDocument es necesario añadir el siguiente código: var MongoClient = require('mongodb').MongoClient , assert = require('assert'); // Connection URL var url = 'mongodb://localhost:27017/myproject'; // Use connect method to connect to the server MongoClient.connect(url, function(err, db) { assert.equal(null, err); console.log("Connected successfully to server"); insertDocuments(db, function() { db.close(); }); }); Si se ejecuta la aplicación se obtendrá el siguiente resultado: Connected successfully to server Inserted 3 documents into the collection Si se pretende realizar una búsqueda que muestre los documentos con el campo a igual © Universidad Internacional de La Rioja (UNIR) a 3 se debería utilizar un código como el siguiente: var findDocuments = function(db, callback) { // Get the documents collection var collection = db.collection('documents'); // Find some documents collection.find({'a': 3}).toArray(function(err, docs) { assert.equal(err, null); Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 11 console.log("Found the following records"); console.log(docs); callback(docs); }); } Un ejemplo para actualizar un conjunto de datos es el siguiente: var updateDocument = function(db, callback) { // Get the documents collection var collection = db.collection('documents'); // Update document where a is 2, set b equal to 1 collection.updateOne({ a : 2 } , { $set: { b : 1 } }, function(err, result) { assert.equal(err, null); assert.equal(1, result.result.n); console.log("Updated the document with the field a equal to 2"); callback(result); }); } Y, para terminar, un ejemplo de borrado sería el siguiente: var removeDocument = function(db, callback) { // Get the documents collection var collection = db.collection('documents'); // Delete document where a is 3 collection.deleteOne({ a : 3 }, function(err, result) { assert.equal(err, null); assert.equal(1, result.result.n); © Universidad Internacional de La Rioja (UNIR) console.log("Removed the document with the field a equal to 3"); callback(result); }); } Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 12 Python (PyMongo) Para instalar PyMongo en Linux lo mejor es utilizar pip: pip install pymongo Y en Windows instalar PyMongo del siguiente enlace: https://pypi.python.org/pypi/pymongo/ Para importar MongoClient desde PyMongo es necesario ejecutar el siguiente comando: Import MongoClient from pymongo Para crear una conexión utilizamos el cliente MongoClient(), que se conectará a localhost y al puerto 27017 si no se especifica ningún argumento. A continuación, se muestran unos ejemplos de conexión: client = MongoClient() client = MongoClient("mongodb://mongo.example.es:27017") Para acceder al objeto de base de datos se pueden utilizar cualquiera de las dos formas que se muestran a continuación: db = client.myDB © Universidad Internacional de La Rioja (UNIR) db = client['myDb'] Para acceder a una colección se procede de la siguiente forma: coll = db.myCollection coll = db['myCollection'] Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 13 Si se quiere insertar un documento: from datetime import datetime result = db.coches.insert_one( { "coche": { "marca": "BMW", "Modelo": "430d", "CV": "220", "colores": ["rojo", "negro"] } } ) Para realizar una búsqueda: cursor = db.coches.find({"marca": "BMW"}) for document in cursor: print(document) Para actualizar un documento: result = db.coches.update_one( {"marca": "BMW"}, { "$set": { "CC": "3000” } } © Universidad Internacional de La Rioja (UNIR) ) Y, por lo tanto, para borrar un documento: result = db.coches.delete_many({"marca": "BMW"}) Métodos de Captura y Almacenamiento de los Datos Tema 6. Ideas clave 14 A fondo Python MongoDB Driver (PyMongo) Tech With Tim. (21 de junio de 2019). Python MongoDB Tutorial using PyMongo [Archivo de vídeo]. https://www.youtube.com/watch?v=rE_bJl2GAY8 Este tutorial te mostrará cómo usar MongoDB con Python y el módulo de Python PyMongo. PyMongo es la API oficial de MongoDB que te permite realizar fácilmente operaciones de mdatabse. Build a restful API with Node.js Express & MongoDB. Rest API tutorial Dev Ed. (11 de mayo de 2019). Build A Restful Api With Node.js Express & MongoDB | © Universidad Internacional de La Rioja (UNIR) Rest Api Tutorial [Archivo de vídeo]. https://www.youtube.com/watch?v=vjf774RKrLc Métodos de Captura y Almacenamiento de los Datos Tema 6. A fondo 15 Las APIS:REST ayudan a desacoplar nuestro código de backend de nuestro front-end para que podamos usarlo en múltiples aplicaciones (aplicaciones móviles, aplicaciones web, etc.). En este vídeo vas a aprender cómo construir una simple publicación de blog tipo api con todos los métodos útiles (GET, POST, DELETE, PATCH). Se usa Node.js como lenguaje de backend, express.js ayuda a crear rutas más fáciles. MongoDB junto con mongoose se usan para crear esquemas y modelos que definen cómo se ven nuestros datos. MongoDB Java Driver MongoDB. (2021). MongoDB Java Drivers [Página web]. http://mongodb.github.io/mongo-java-driver/ En este apartado se puede encontrar toda la información relativa a todos los drivers de Java, según la versión de MongoDB utilizada. En este enlace oficial de Mongo, además de explicar cómo funciona el driver y brindar multitud de ejemplos, también te enseña a utilizar diferentes librerías que facilitarán el desarrollo de aplicaciones en Java utilizando MongoDB. MongoDB Node.js Driver MongoDB. (2015). MongoDB Node.JS Driver [Página web] © Universidad Internacional de La Rioja (UNIR) https://mongodb.github.io/node-mongodb-native/ En este apartado se puede encontrar toda la información relativa a todos los drivers de Node.js, según la versión de MongoDB utilizada. El enlace proporciona todos los ejemplos necesarios para empezar a desarrollar aplicaciones con MongoDB, además de dar recomendaciones sobre librerías que harán la vida del desarrollador más fácil. Métodos de Captura y Almacenamiento de los Datos Tema 6. A fondo 16 MongoDB Python Driver MongoDB. (2021). MongoDB Python Drivers [Página web]. https://docs.mongodb.com/drivers/python En este apartado se pueden encontrar todos los enlaces necesarios para iniciarse en la programación de Python utilizando la base de datos MongoDB. Ofrece toda la información relativa a las versiones de MongoDB y una serie de tutoriales de © Universidad Internacional de La Rioja (UNIR) desarrollo con varios ejemplos. Métodos de Captura y Almacenamiento de los Datos Tema 6. A fondo 17 Test 1. ¿Cuál es el objetivo de un driver? A. «Traducir» las llamadas que se hacen desde un lenguaje de programación a un «lenguaje» que entienda la base de datos. B. Proporcionar un objeto de conexión. C. Proporcionar una serie de «funciones» que permitan al programador interactuar con la base de datos. D. Todas las anteriores son correctas. 2. ¿Dónde se debería acudir si se quiere desarrollar una aplicación con base de datos MongoDB pare gestionar una conexión? A. A la página oficial del lenguaje de programación con el que estamos desarrollando. B. A la página de documentación oficial de MongoDB, en el apartado de drivers. C. A la página oficial del sistema operativo donde estemos desarrollando. D. Todas las anteriores son correctas. 3. ¿Cuál de los siguientes lenguajes de programación soporta MongoDB? A. C. B. Java. C. PHP. D. Todos los anteriores son correctos. © Universidad Internacional de La Rioja (UNIR) 4. ¿Cuál es la mejor forma de descargar el driver de Java? A. Utilizando Maven. B. Buscando en Google. C. Repositorios oficiales de Java. D. Las respuestas A y C son correctas. Métodos de Captura y Almacenamiento de los Datos Tema 6. Test 18 5. Si no se especifica en el driver ningún parámetro, ¿dónde se realiza la conexión? A. localhost y puerto 27017. B. Puerto 27017. C. Localhost. D. Es obligatorio definir un servidor y un puerto. 6. ¿Qué biblioteca utiliza el driver de java para representar los documentos en MongoDB? A. BSON. B. JSON. C. CSV. D. XML. 7. ¿Cuál es la mejor forma de instalar el driver de Node.js? A. Usando Maven. B. Buscando en Google. C. Usando NPM. D. Todas las anteriores son correctas. 8. ¿Qué es PyMongo? A. Una base de datos NoSQL. B. El driver de MongoDB para Python. C. Una base de datos SQL. D. El driver de lenguaje de programación Py. © Universidad Internacional de La Rioja (UNIR) 9. ¿Cómo podemos descargar el driver de Python para Mongo? A. Utilizando NPM. B. Utilizando Maven. C. Buscando en Google. D. Utilizando PIP. Métodos de Captura y Almacenamiento de los Datos Tema 6. Test 19 10. ¿Cuál de estos comandos son válidos para acceder a una colección de mongo? A. db.myCollection B. db['myCollection'] C. db.getCollection('myCollection') © Universidad Internacional de La Rioja (UNIR) D. Todas son correctas. Métodos de Captura y Almacenamiento de los Datos Tema 6. Test 20