mongodbSi tienes una aplicación que cada día crece y crece en datos, si la velocidad de registros que almacenas cada día crece y crece, si deseas crear una nueva aplicación completamente escalable horizontalmente y completa o si simplemente te encuentras con fuentes de datos que no eres capaz de almacenar y tratar MongoDB es la base de datos que debes usar.

MongoDB es una base de datos NoSQL de tipo documental, esto quiere decir que no funciona como las bases de datos tradicionales y te permite almacenar en formato documental distintos tipos de datos con distinta estructura por cada documento, o sea, no todos los documentos deben tener la misma estructura, este es perfecto pues te ayuda a tener un mejor dimensionamiento de lo que almacenas pues su formato de documento facilita el almacenamiento y las consultas a gran escala.

 

Ventajas que te brinda MongoDB y su escalabilidad horizontal

  • Modelado documental

Este nos permite modelar nuestros datos en formato documental, en cada documento podremos almacenar hasta 16Mb o mucho más. Este tipo de almacenamiento es muy flexible pues no posee una estructura fija dando flexibilidad en los datos a almacenar.

  • Consultas y Agregaciones

Posee su propio sistema de consultas y agregaciones las cuales facilitan la recuperación y tratamiento de la información. Dicho lo anterior es muy fácil realizar consultas a grandes bancos de datos replicados y en muchos servidores.

  • Java Script

También te permite realizar manipulación de datos mediante Java Script, lo cual te permite extender tus funcionalidades o la integración de código existente.

  • Replicación

La Replicación o Replica Set es el mecanismo que provee durabilidad (Redundancia) y alta disponibilidad  (Failover automático) de todos los datos disponiendo de una copia de los mismos en múltiples servidores. Su mecanismo se crea a base de definir un servidor o nodo como primario y otros como secundarios.

  • Sharding o Particionamiento de Datos

Soporta particionamiento a través de un grupo de servidores, donde los datos serán divididos en porciones y a su vez serán almacenados o en un nodo o en un conjunto de nodos.

  • Backup

Posee su propio sistema de realización de distintos tipos de Backup´s de manera que pueda contar siempre con un respaldo contando igualmente de utilidades para su restauración en caso de uso.

  • Seguridad

Permite crear usuarios, perfiles y roles para el manejo de acceso a los datos, también se puede definir claves propias de acceso y la integración con Kerberos, SASL y LADP.

  • Monitoreo y Auditoria

Mediante el Profiler atomático a distintos niveles MongoDB puede obtener datos de operaciones de escritura, cursores, comandos o instancias en ejecución, además posee también estadísticas a nivel de servidor, Base de datos, tablas y operaciones.

 

Algunos casos de uso

Loggingde Eventos
•las bases de datos basadas en documentos puede loguear cualquier clase de eventos y almacenarlos con sus diferentes estructuras.
•Pueden funcionar como un repositorio central de logueo de eventos.

CMS, blogging
•su falta de estructura predefinida hace que funcionen bien para este tipo de aplicaciones.

Web-analytics/ Real-Time analytics
•Almacenar cantidad de vistas a una página o visitantes únicos.

E-Commerce
•A menudo requieren tener esquemas flexibles para los productos y órdenes

y muchos más!!!

 

Algunos casos donde NO debas usarlas

Transacciones Complejas con diferentes operaciones
•no están soportadas, salvo en RavenDB.

Consultas contra estructuras de agregados variables.
•que los datos se almacenen con cualquier estructura no implica que sea óptimo consultar por cualquier clave. Si los agregados varían entre sí, las consultas debieran variar también. Puede llevar a normalizar los datos, que no es lo que queremos.

 

Si deseas puedes ampliar más información en el siguiente artículo: Bases de Datos nosql: Mongodb

 

 

Si tú o tú organización desean conocer con más detalle cómo se podría llevar a cabo una implementación con MongoDB o desean saber si es la base de datos que solucionaría sus problemas tecnológicos actuales, escríbeme al correo john.carvajal@jacagudelo.com donde te contactare y realizaremos una reunión vía Skype, nos conoceremos y explicaré lo que desees con una duración de 30 a 60 minutos donde dejaré en claro tus dudas y sin ningún costo.