• MongoDB (de la palabra en inglés “humongous” que
significa enorme) es un sistema de base de datos
NoSQL orientado a documentos, desarrollado bajo el
concepto de código abierto.
• MongoDB forma parte de la nueva familia de sistemas de
base de datos NoSQL. En vez de guardar los datos en
tablas como se hace en las base de datos relacionales,
MongoDB guarda estructuras de datos en documentos
tipo JSON con un esquema dinámico (MongoDB llama
ese formato BSON), haciendo que la integración de los
datos en ciertas aplicaciones sea más fácil y rápida.
• El desarrollo de MongoDB empezó con la empresa de
software 10gen en el 2007, cuando estaban
desarrollando una plataforma como servicio (PAAS)
similar al conocido Google App Engine
• En el 2009 MongoDB fue lanzado como un producto
independiente y publicado bajo la licencia de código
abierto AGPL.[6]
• En marzo de 2011, se lanzó la versión 1.4 y se consideró
ya como una base de datos lista para su uso en
producción.[7]
• Es una base de datos NoSQL, orientada a documentos.
• · Pensada para ser rápida, escalable y fácil de usar.
• MongoDB es una base de datos documental, no una
base de datos relacional. Es una de las bases de datos
que han surgido del movimiento noSQL y que intenta
incrementar la escalabilidad del sistema. La idea básica
es sustituir el concepto de fila por el concepto de
documento.
• · Aplicaciones que almacenan grandes cantidades de
datos o datos complejos.
• · Por ejemplo para aplicaciones con estructuras
complejas como blogs (post, comentarios, rollbacks,etc)
o aplicaciones de analítica (Google analytics).
• Ausencia de transacciones
• · (Aunque parezca un inconveniente)esto le permite a
MongoDB ser másrápida y escalable a nivel horizontal.
• Escalabilidad horizontal
• · En sistemas tradicionales RDBMS, para mejorar el
rendimiento de la base de datos se adquiría una
máquina más potente (escalado vertical)
• · En MongoDB funciona mejor el escalado horizontal
(incrementar número de máquinas)
• · JSON es más que una gran forma de intercambiar
información, es tambiénuna excelente forma de
almacenarla
• · MongoDB almacena todo un registro en un mismo
documento.
• · No hay necesidad de especificar estructura alguna y
sus documentos pueden cambiarse individualmente.
• · Como en las bases de datos tradicionales, MongoDB
también acepta la ejecución de queries dinámicas (a
diferencia de otras como CouchDB)
• · Todos los documentos son automáticamente indexados
con una clave llamada _id.
• · Esta clave nos asegura que cada documento es único,
• · MongoDB permite indexar documentos embebidos (se
puede crear un índice en un código postal)
• · Permite la indexación de la información basado en la
localización.
• · Permite crear consultas del tipo: “cuantos artículos se
encuentran a cierta distancia de un determinado conjunto
de coordenadas”,
• · MongoDB provee mecanismo llamado replicación
maestro-esclavo, con lo que solo una base de datos
está activa para escritura en un momento dado.
• · Todas las peticiones de escritura se realizan en la base
de datos maestra y esta las pasa a la réplica (esclavo)
• · Si la bd principal falla la esclava ocupa su lugar.
• MongoDB tiene drivers oficiales para los siguientes lenguajes de
programación:
• C
• C++
• C# / .NET
• Erlang
• Haskell
• Java
• JavaScript
• Lisp
• node.JS
• Perl
• PHP
• Python
• Ruby
• Scala
• MongoDB es una base de datos, no relacional del tipo
llamada NoSQL termino acuñado en 2009 para englobar
las (nuevas) bases de datos pensadas para la web.
• Quien las usa?
• Google las usa, Facebook, las usa, el Ney York times
(mongoDB), foursquare (mongoDB). Son servicios que
tienen una cantidad de inserts en sus data store
impresionantes, además de necesidades de escalar de
manera horizontal contantemente
• La historia de MongoDB es más bien corta pero
interesante de recordar, nació de un proyecto mucho
más ambicioso de la empresa 10gen, cuando esta
estaba trabajando en un software platform-as-a-service
compuesto de un servidor de aplicaciones y una base de
datos. Era una especie de AppEngine de Google, la idea
detrás del proyecto era una infraestructura que escale
automáticamente en requerimientos tanto de software
como de hardware.