Drivers de MongoDB

Características de los drivers de MongoDB

En primer lugar veamos cuál es la finalidad de un driver MongoDB. Cuando estamos creando una aplicación con un lenguaje de programación, el que sea, más tarde o más temprano tendremos que guardar parte de la información en una base de datos, en nuestro caso MongoDB. Para que la aplicación se comunique adecuadamente con MongoDB utilizamos un driver.

Para guardar información en MongoDB (o para recuperarla) tenemos que utilizar la sintaxis propia de MongoDB (MongoDB Wire Protocol y BSON), para poder insertar, actualizar, eliminar o recuperar información. El driver de MongoDB para un determinado lenguaje de programación (Java, PHP, C#, C++, Python, Ruby,…), lo que hace es permitirnos interactuar con MongoDB con una sintaxis similar a la del lenguaje de programación escogido.

Es decir, no necesitamos conocer el idioma que utiliza MongoDB. El driver del lenguaje de programación que escojamos en cada caso, se encarga de proporcionarnos operaciones que nos permiten comunicarnos con MongoDB utilizando el idioma que ya conocemos, el de nuestro lenguaje de programación.

Drivers de MongoDB existentes

MongoDB cuenta con drivers para una gran cantidad de lenguajes de programación, aunque evidentemente no para todos los existentes. Para buena parte de ellos, es la propia MongoDB la que se encarga de desarrollar y mantener estos drivers. A fecha de realización de este artículo (septiembre de 2014), los drivers oficialmente soportados por MongoDB son:

En la página web de MongoDB teneis un listado actualizado de estos drivers, http://docs.mongodb.org/manual/applications/drivers/. Los drivers oficialmente soportados por MongoDB suelen incluir documentación bastante extensa, como el manual de uso del driver, referencia completa del API, acceso al código fuente del driver, información sobre otros drivers alternativos u otros tipos de herramientas útiles (Mapeadores de objetos, cómo se hace, tutoriales, interfaces gráficas de administración,…)

En la siguiente página web de MongoDB tenéis un listado de drivers mantenidos por la comunidad, http://docs.mongodb.org/ecosystem/drivers/community-supported-drivers/, no directamente por MongoDB. Como en cualquier otro proyecto de la comunidad, deberemos evaluar su madurez y capacidad de mejora continua para adoptarlo en producción.

Funcionamiento de un driver de MongoDB

Recordemos que en MongoDB los documentos se almacenan utilizando el formato BSON. Cuando utilizamos un driver de MongoDB, por regla general utilizaremos otro tipo de formato para expresar documentos, formato que en la mayoría de los casos será muy similar pero no igual. Por ejemplo en NodeJS utilizamos JSON, en Java un mapa DBObject, o en Ruby un Hash. Por tanto una de las funciones del driver de MongoDB es traducir entre el formato usado por el lenguaje de programación y BSON.

Otra de las funciones del driver es generar el mensaje de MongoDB Wire Protocol correspondiente a la operación solicitada, en el que se incluyen los documentos BSON traducidos del párrafo anterior.

Por ejemplo, en Ruby para actualizar los documentos de una colección, cambiando los que tienen un campo cuenta igual a 5 por 6 haríamos:

coll.update(

   { "cuenta" => 5 } ,

   { "$set" => { "cuenta" => 6 } }

)

En este caso hay que traducir dos hashes de ruby, el de la condición cuenta igual a 5 y el de actualiza cuenta a 6, a dos documentos BSON, y generar un mensaje de MongoDB Wire Protocol correspondiente a la operación de actualización, que incluya los dos documentos BSON. Este mensaje es el que recibiría el servidor MongoDB, y consecuentemente actualizaría sólo los documentos cuyo campo cuenta fuese 5, poniendo dicho campo a 6.

En NodeJS el ejemplo anterior sería:

coll.update(

   { "cuenta" : 5 } ,

   { $set : { "cuenta" : 6 } }

)

Fijaros que tanto en Ruby como en NodeJS utilizamos un método update para referirnos a una operación de actualización. En otros drivers puede que el nombre para este método sea el mismo o distinto, eso queda a discreción del desarrollador del driver. Sin embargo la forma de expresar la información de la operación de actualización cambia (hash en Ruby, JSON en NodeJS). En cualquier caso el mensaje de MongoDB Wire Protocol generado por ambos ejemplos debería de ser el mismo. Y por tanto el servidor de MongoDB haría lo mismo en los dos casos.

Conclusión

MongoDB cuenta con diversos drivers que nos permitirán trabajar con distintos lenguajes de programación, pudiendo interactuar con MongoDB utilizando el idioma que ya conocemos del lenguaje de programación empleado en cada caso.

Leave A Reply

Tu dirección de correo electrónico no será publicada.