texto:   A-   A+
eliax

Editorial eliax: MongoDB, convirtiéndose en estándar por defecto de NoSQL
eliax id: 10529 josé elías en jul 19, 2013 a las 10:03 AM (10:03 horas)
Por décadas, el modelo reinante en el espacio de bases de datos ha sido el Relacional, y de ahí las bases de datos relacionales (RDBMS), en donde en años recientes el mercado se ha reducido a un puñado de competidores representados por bases de datos comerciales como Oracle y Microsoft SQL Server, o libres/abiertas como MySQL y PostgreSQL.

Sin embargo, gracias a la llegada de la Web y una nueva generación de aplicaciones que necesitan manejar volúmenes de datos extremadamente grandes y en tiempo real, un tipo diferente de base de datos (que en realidad es toda una familia de bases de datos) se está popularizando bajo el descriptivo "NoSQL".

Google fue quizás la empresa que más popularizó este tipo de bases de datos con su implementación de la técnica Map-Reduce y su propio sistema de fichero distribuido (GoogleFS), algo que se vio necesario en desarrollar dado el colosal trabajo que representa el indexar las miles de millones de páginas web en el Internet de su buscador.

Sin embargo, desde hace unos 6 a 7 años la industria de NoSQL ha estado en un constante remolino, en donde nuevas bases de datos y técnicas entraban, otras salían, unas se adoptaban a gran escala, otra en entornos extremadamente especializados, pero nunca nada que podríamos llamar "un estándar" en donde todos nos pudiésemos poner de acuerdo e invertir recursos de tiempo, personal y dinero.

Pero por fin aparenta en meses recientes que tenemos a un líder en este espacio, y es MongoDB, una base de datos open-source que desde que salió al mercado llamó mucho la atención y hoy ya es la que más adeptos tiene en el espacio NoSQL.

Noten que a través de los años en eliax les he hablado de otras bases de datos NoSQL, pero esta es la primera vez en donde me siento lo suficientemente cómodo como para recomendar por fin una.

Pero, ¿qué tiene MongoDB que ha hecho que suba en popularidad por sobre las otras bases de datos NoSQL? Pues en mi opinión, es una combinación de escalabilidad, robustez, simpleza y familiaridad.

A diferencia de otras bases de datos NoSQL, MongoDB trata de ser lo más familiar posible a los desarrolladores de bases de datos relacionales, a nivel tal que para muchos queries SQL existe una sencilla forma de traducir esas sentencias al modelo de MongoDB, como pueden apreciar en este enlace oficial que les muestra ambas maneras de hacer la misma cosa en los dos modelos diferentes de bases de datos.

Así mismo, MongoDB escala masivamente y su robustez ha sido demostrada en proyectos de producción de gran escala en empresas como SourceForge, MTV, Intuit, Craigslist, The New York Times, Disney, Foursquare, SAP, Codecademy, EA, shutterfly, Forbes, bit.ly, gitHub, Eventbrite, 500px, eHarmony, Justin.tv, Viber, y otras. Así mismo, MongoDB trata de ser lo más sencillo posible de configurar y administrar, incluso permitiendo de forma relativamente automatizada el escalar a múltiples servidores conforme aumente la demanda de tu aplicación (por medio de la técnica de sharding, que no es más que particionar los documentos en distintos servidores para distribuir la carga).

Noten además que aunque la mayoría de bases de datos NoSQL no pueden garantizar atomicidad (en el modelo ACID), que MongoDB al menos te garantiza atomicidad al nivel de un Documento (es decir, siempre y cuanto tus datos estén todos bajo un mismo nodo de un documento, podrás asumir que las escrituras y actualizaciones se harán atómicamente, aunque para datos distribuidos en distintos Documentos deberás implementar algún protocolo a nivel de tu aplicación para tal fin).

Y por supuesto, está el caso que es gratuito su uso (aunque sus desarrolladores ofrecen también una versión paga Empresarial), y que existen drivers para prácticamente cualquier plataforma que se puedan imaginar.

Noten que es importante que antes de que adopten MongoDB, o cualquier otra base de datos, que es muy importante que sepan el patrón de uso de sus aplicaciones, pues hay muchísimos casos en donde es quizás más apropiado utilizar una base de datos relacional como MySQL que una del tipo NoSQL, e incluso desde el mismo espacio de NoSQL existen casos especializados en donde quizás sea mejor una base de datos que solo haga almacenamiento key-values (como Redis, aunque noten que MongoDB también implementa ese modelo), o incluso una basada en graphs como el popular (en ese espacio) Neo4J.

En cuanto a MongoDB, a bajo nivel esta está basada en el concepto del almacenamiento de Documentos, y no en el concepto de una esquema rígida como en las RDBMSs. Y algo interesante es que estos documentos se conforman a un formato estilo JSON (y almacenados internamente en formato binario de JSON, o BSON), por lo que su estructura es tan (o más) eficiente que XML, relativamente fácil de entender por ojos humanos, y familiar para aquellos que han programado el modelo AJAX con Javascript.

página oficial de MongoDB

autor: josé elías

Comentarios

  • Yo también empujo por MongoDB, está de madre para usarlo junto a Postgresql.

  • 10gen (dueños de mongo) están ofreciendo cursos online muy buenos https://education.10gen.com/dashboard

  • He estado leyendo de MongoDB. En mi persona no soy muy amante de las RDBMS por lo que cuando conocí Mongo quedé facinado.

    Espero mas personas sigan usando mongoDb

    • Aunque como dije en el artículo, ojo, es bueno utilizar el tipo de base de datos que vaya acorde a las necesidades. Hoy día por ejemplo un RDBMS es quizás mejor para tareas transaccionales dentro de organizaciones que no tengan una necesidad de miles de requests por segundo.

  • maravilloso, es muy parecido a la sintaxis basada en metodos del entity framework de MS.

    Solo echo de menos las expresiones lambda

  • Me pregunto si fue coincidencia que en las empresas pusiste Justin y Viber, una al lado de la otra. :-)

    • Eliax siempre ha sido un gran belieber.

  • En mi trabajo la hemos usado y hasta ahora no escuché quejas. Reconozco que no era lo mismo hace alrededor de 2 años atrás. Es otro producto totalmente diferente desde entonces.
    Concuerdo totalmente en que no son para cualquier aplicación y que en algunos casos es necesario utilizar RDBMS, como aplicaciones que manejan dinero y transacciones.
    La otra complicación que tienen es comprender el paradigma. Es como venir programando en procedural y pasar a objetos. Cambia bastante la arquitectura de las aplicaciones porque hay que contemplar cosas que antes resolvía la base y ahora no.
    José, te dejo también el siguiente link para ti que te gusta investigar estas cosas http://www.gridgain.com/. Es una plataforma In-Memory que tiene algunas cosas no tan comunes (como ACID en modalidad distribuida)

  • Saludos José Elías, le dejo saber que ya en el pais hay una comunidad de mongodb recien formada, puedes verlo en http://www.10gen.com/user-groups en la seccion Central America, y de paso les invitamos a los demas jovenes interesados a unirse en http://www.meetup.com/Santo-Domingo-MongoDB-User-Group/

    Ya se han realizados charlas y talleres en UNPHU de La Vega, y en INTEC como sede, ya que han apoyado la iniciativa de la persona que inicio la comunidad. Pueden encontrarnos en LinkedIn: MongoDB Republica Dominicana, seguirnos en twitter @mongodbdo y en facebook: MongoDB Republica Dominicana.

    Estamos a la espera que otras universidades abran las puertas para llevar materiales y charlas sobre MongoDB.

  • excelente post, me parece muy interesante todos los puntos que resaltas sobre MongoDB y me gustaria saber un poco mas afondo sobre este motor de base de datos NoSql.

    me podrias decir de donde obtuviste toda esta informacion, sea de articulos o libros que sirvan para una referencia como tal, gracias

Añadir Comentario

tu nombre
tu email
(opcional)
web personal
(opcional)
en respuesta a...
comentario de caracteres máximo
3 + 6 = requerido (control anti-SPAM)
 

"Mi mente va a estallar, esto es EXTRAORDINARIO!!!!!!!!!!"

por "Patricio" en jul 23, 2010


en camino a la singularidad...

©2005-2014 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax