Você está na página 1de 3

Mongo DB

MongoDB es un sistema de base de datos multiplataforma orientado a documentos,


de esquema libre. Como ya os expliqu, esto significa que cada entrada o registro
puede tener un esquema de datos diferentes, con atributos o columnas que no
tienen por qu repetirse de un registro a otro. Est escrito en C++, lo que le confiere
cierta cercana al bare metal, o recursos de hardware de la mquina, de modo que es
bastante rpido a la hora de ejecutar sus tareas. Adems, est licenciado como GNU
AGPL 3.0, de modo que se trata de un software de licencia libre. Funciona en
sistemas operativos Windows, Linux, OS X y Solaris.

Las caractersticas que ms destacara de MongoDB son su velocidad y su rico pero


sencillo sistema de consulta de los contenidos de la base de datos. Se podra decir
que alcanza un balance perfecto entre rendimiento y funcionalidad, incorporando
muchos de los tipos de consulta que utilizaramos en nuestro sistema relacional
preferido, pero sin sacrificar en rendimiento.

Terminologa bsica en MongoDB

En MongoDB, cada registro o conjunto de datos se denomina documento. Los


documentos se pueden agrupar en colecciones, las cuales se podra decir que son el
equivalente a las tablas en una base de datos relacional (slo que las colecciones
pueden almacenar documentos con muy diferentes formatos, en lugar de estar
sometidos a un esquema fijo). Se pueden crear ndices para algunos atributos de los
documentos, de modo que MongoDB mantendr una estructura interna eficiente para
el acceso a la informacin por los contenidos de estos atributos.

Formato de los documentos e ideas para la organizacin de datos

Los distintos documentos se almacenan en formato BSON, o Binary JSON, que es


una versin modificada de JSON que permite bsquedas rpidas de datos. Para
hacernos una idea, BSON guarda de forma explcita las longitudes de los campos, los
ndices de los arrays, y dems informacin til para el escaneo de datos. Es por esto
que, en algunos casos, el mismo documento en BSON ocupa un poco ms de espacio
de lo que ocupara de estar almacenado directamente en formato JSON. Pero una de
las ideas claves en los sistemas NoSQL es que el almacenamiento es barato, y es
mejor aprovecharlo si as se introduce un considerable incremento en la velocidad de
localizacin de informacin dentro de un documento.
Cmo consultar los datos

Sin entrar demasiado en detalles acerca de todas las posibilidades que MongoDB nos
ofrece para consultar los datos almacenados, s quisiera nombrar algunas de ellas,
para hacer notar que no estamos frente a un sistema simple de almacenamiento de
pares clave-valor.

En primer lugar, MongoDB nos permite utilizar funciones Map y Reduce escritas en
Javascript para seleccionar los atributos que nos interesan de los datos, y agregarlos
(unificarlos, simplificarlos) en la manera deseada, respectivamente. Esto es algo
habitual en muchos sistemas NoSQL, y en algunos casos es incluso la nica forma
posible de consultar datos. Claro est que muchas veces necesitamos algo bastante
ms sencillo que sto.

En MongoDB se pueden utilizar consultas al valor de un atributo especfico. Por


ejemplo, podemos capturar el post que tiene un determinado ttulo:

db.posts.find({title : Una introduccin a MongoDB})

El valor a consultar puede estar anidado en un tipo de datos ms completo en el


atributo del documento (por ejemplo, como valor de un hash asociado al atributo, o
como el valor de uno de los tems de un array). Se utiliza un punto como separador de
los nombres de las claves de los diferentes hashes que hay que recorrer hasta llegar
al valor deseado. Por ejemplo, la siguiente consulta devolvera todos los posts escritos
por un determinado autor:

db.posts.find({author_info._id : 4da2c0e2e999fb56bf000002})

Y esta otra los posts etiquetados con MongoDB:

db.posts.find({tags : MongoDB})

El hash utilizado como conjunto de condiciones que deben cumplir los documentos a
devolver puede incluir operadores de muy diversos tipos, no slo comparadores del
valor absoluto buscado. Algunos de ellos son:

$all : Para indicar que el array almacenado como valor del atributo debe tener los
mismos elementos que el proporcionado en la condicin.

$exists : Para comprobar que el atributo existe en el documento.


$mod : Para comprobar el resto de una divisin del valor del atributo por un nmero.

$ne : Para indicar que el valor no puede ser el proporcionado.

$in : Para indicar que el valor debe estar entre alguno de los proporcionados.

$nin : Contrario de $in.

$or : Para indicar que se debe cumplir al menos una condicin de entre un grupo de
condiciones.

$nor : Contrario de $or.

$size : Para indicar el nmero de elementos que debe haber en el array almacenado
como valor.

$type : Para comprobar el tipo del valor almacenado (nmero, cadena)

Expresiones regulares : El valor debe concordar con la expresin regular indicada.

Y muchos, muchos ms. Los resultados se pueden agrupar, ordenar, contar, paginar,
y otras tantas operaciones comunes sin necesidad de recurrir al farragoso Map /
Reduce. Y siempre que los atributos consultados tengan definidos un ndice, la
velocidad de las consultas es espectacular.

Bueno, por ahora creo que es suficiente como para que sirva de introduccin a este
fabuloso motor de base de datos. En futuros artculos procurar hablaros de sus otras
caractersticas a la hora de escalarlo para su uso en mltiples mquinas, as como
otros mecanismos interesantes de MongoDB como los ndices geoespaciales. Si
queris experimentar con l, y trabajis habitualmente con Ruby, tal vez os interese
echar un vistazo a un Object Document Mapper para este lenguaje que escrib para
un proyecto, y que facilita la interaccin con el motor desde tus modelos:
MongoODM.

Você também pode gostar