viernes, julio 19, 2013
|
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 |
13 comentarios |
Opinión / Análisis , Predicciones , Software |
Comentarios
Añadir Comentario |
"Creo que compartimos el gusto de saber más sobre el cosmos y la tecnología, asi como del futuro que nos depara a la humanidad, a veces somos el clásico chavo raro que no va con la corriente y hacemos cuestionamientos desde lo mas básico hasta las preguntas existenciales.
Creo que la mayoría que visitamos este blog es porque compartimos contigo el gen de la curiosidad y muchos somos geeks. Gracias Elías por tu tiempo para compartir tus conocimientos, siento que eres discípulo de Carl Sagan."
Creo que la mayoría que visitamos este blog es porque compartimos contigo el gen de la curiosidad y muchos somos geeks. Gracias Elías por tu tiempo para compartir tus conocimientos, siento que eres discípulo de Carl Sagan."
en camino a la singularidad...
©2005-2024 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax
Seguir a @eliax
Yo también empujo por MongoDB, está de madre para usarlo junto a Postgresql.