Skip to content

MongoDB

by Cristian Requena on abril 10th, 2010

MongoDB es otra de las muchas bases de datos NoSQL existentes, cuya particularidad es que intenta unir las ventajas de los almacenes clave-valor (léase, Dynamo) y de las bases de datos relacionales clásicas (RBDMS). Del mismo modo que CouchDB, es una base de datos de documentos sin esquema, pero está desarrollada en C++ en lugar de Erlang.

Para almacenar los documentos, MongoDB utiliza una serialización binaria de JSON, llamada BSON, que es una lista ordenada de elementos simples. El núcleo de la base de datos es capaz de interpretar su contenido, de modo que lo que a simple vista parece un contenido binario, realmente es un documento que contiene varios elementos. Estos datos están limitados a un tamaño máximo de 4 MB; para tamaños superiores se requiere del uso de GridFS.

En el área funcional, MongoDB permite la realización de operaciones de modificación de documentos enviando solamente el diferencial de datos, esto es, la modificación del mismo se realiza dentro del servidor, no en la parte cliente. Además, las escrituras a disco no son simultáneas a la realización de la operación, sino que difieren unos 2 segundos, en los que se puede modificar varias veces el registro antes de ser persistido. Además, en el caso de incrementar el tamaño del documento y de que los nuevos datos no se puedan almacenar junto los antiguos, se mueve el documento entero hasta un área vacía del archivo de datos (esto es, se evita en gran medida la fragmentación del mismo).

Un aspecto relevante de MongoDB es que soporta consultas dinámicas (comportamiento análogo al de SQL), es decir, se pueden formular sobre cualquier valor de los documentos y no solamente en los indexados. Por otra parte, la escalabilidad horizontal de esta base de datos está limitada, actualmente, a 20 nodos, aunque el objetivo es alcanzar una cifra cercana a los 1000.

También dispone de MapReduce, del mismo modo que CouchDB, por lo que las diferencias más visibles entre ambas bases de datos son, aparte del lenguaje de programación en el que están implementadas, la interfaz entre estas y el desarrollador.

From → NoSQL

6 Comments
  1. Añadiría a todo lo anterior la característica Autosharding o autofragmentación, con lo que la escalabilidad física, así como la alta disponibilidad, aumenta enormemente. Ya hay una versión de desarrollo que soporta esta característica: http://www.mongodb.org/display/DOCS/Sharding

    La versión estable actual soporta emparejamiento de pares, maestro y esclavo, con un buen resultado y una facilidad de configuración increíbles.

    • Hola Rafael, gracias por tu comentario, veo que me dejé cosas de MongoDB por comentar.
      He ojeado tu blog y lo veo muy interesante, he añadido un enlace en mi blog 😉

      Si tienes sitio para más enlaces, te invito a enlazarme 😉

      Saludos,

      Cristian Requena.

      • Gracias, Cristian. El enlace a NoSQL.es está en MongoSpanish. Cualquier cosa que necesitéis, aquí un amigo.

        Aprovecho para comentarte que ya en breve estará (o ya está) en los quioscos, la revista TodoLinux, donde desde el mes de Junio, se dedicarán tres números a artículos sobre MongoDB. En el primer artículo hace una breve introducción a las bases de datos NoSQL, comentando algunas características de ellas, así como datos de rendimiento con respecto a las bases de datos relacionales.

        • Buenas Rafael.

          Seguramente me haga con un ejemplar de la revista, nunca está de más algo de información en papel impreso 🙂

          Saludos,

          Cristian Requena.

  2. porque no dan ventajas y desventajas

    • Ventajas es la rapidez y la forma en que obtienes los datos, es muy fácil implementar replicas y Sharding.
      La desventaja es que no posee JOIN ni relaciones entre documentos, ni colecciones, ni base de datos, pero existe una forma manual y usando DBRef, que es el mecanismo que tiene mongo para las relaciones e igual necesitas otra consulta para obtener algo, es igual que hacer la relación manual.

      No se si es ventaja o desventaja, pero la cantidad de conexiones depende del sistema que estes utilizando, ya que mongoDB determina automaticamente el espacio, las conexiones permitidas dependiendo de las prestaciones donde se instale.

      Mas dudas revisa http://docs.mongodb.org/manual/faq/

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS