Cuando pienso en el término Bases de Datos, inmediatamente viene a mi mente una imagen de tablas, cada una con sus respectivos atributos, organizadas en filas y columnas, y unidas entre sí por alguna llave primaria o foránea. Si, este ha sido el concepto gráfico para imaginarme una Base de Datos Relacional y en la mayoría de las ocasiones, estas tablas almacenan texto, números y tal vez imágenes. Así mismo, de manera inmediata vienen a mi memoria conceptos como “Normalización de la Base de Datos”, “Consistencia de la información”, “Rendimiento ”, reglas rígidas que garantizan ACID ,etc. Este esquema de Base de Datos cubre las necesidades de una empresa que requiere hacer consultas, modificaciones, eliminaciones de sus datos en tiempo real, considerando que el esquema de la estructura de la Base de Datos es estático, es decir ¿Que pasa si la organización se encuentra en producción y necesitas agregar un campo a la BD o si deseas en general que la Base de Datos crezca en ese preciso momento? Por mencionar un ejemplo, esto implica tiempo, costos y que tal vez se deba de dar de baja la BD, las aplicaciones y puedas hacer ese tipo de cambios. Ahora, imaginemos un escenario donde los datos se almacenan de forma remota en varios servidores virtuales en la nube, ¿Como realizamos esos cambios?
Otro de los retos con los que se encuentran las organizaciones, es el almacenamiento por el incremento considerable de grandes volúmenes de Datos, sumado a esto, el tipo de información que se almacena, su estructura, las aplicaciones que los manipulan, etc.
En un mundo donde la fuente de los datos es diversa, surge una nueva forma de almacenar datos: las Bases de Datos NoSLQ. Y no es tan nueva, la primera vez que se mencionó este término fue en 1998, pero se retomó con más fuerza a partir del 2009. Las Bases de Datos NoSQL (Not Only SQL) surgen en un mundo donde la información se comparte en segundos independientemente de la ubicación geográfica donde se genere, los horarios o el idioma, estos datos representados en mensajes instantáneos, videoconferencias, mensajes de voz, imágenes, documentos, etc!!! Requieren un tipo de almacenamiento Flexible, escalable, de alto Rendimiento.
La característica principal de las Bases de Datos No SQL es que tienen un esquema de bases de datos flexible, especialmente útiles cuando la empresa necesita, acceder y analizar grandes cantidades de datos estructurados y no estructurados que se almacenan localmente o de manera remota en servidores virtuales, especialmente para obtener información a través de aplicaciones de Big Data, para qué con dicha información se puedan hacer Análisis de Datos y permita manejar adecuadamente las necesidades de escalabilidad y Rendimiento que las BD Relacionales no consideran.
Si las aplicaciones WEB de la organización necesitan accesar a la BD, si no es tan importante las reglas ACID de la información, si se necesita un esquema flexible en la estructura de la BD, si se realizan múltiples operaciones de lectura y escritura, y el Rendimiento es muy importante, entonces existen diferentes Modelos de Datos en las BD No SQL para satisfacer las necesidades anteriormente mencionadas. Existen cuatro modelos de Datos: Modelo Documento, Modelo Gráfico, Modelo Clave-Valor y Modelo Orientado a Objetos.
Una herramienta que se ha convertido en la favorita de los desarrolladores que utiliza el modelo de Datos » Modelo Documentos» es MongoDB, está hecho en c++ por lo que su ejecución es rápida, es escalable, con esta herramienta almacenas cualquier contenido, cualquier tipo de datos y permite Flexibilidad en el esquema de la BD, y un mejor rendimiento, así mismo cubre las necesidades de grandes volúmenes de almacenamiento. Los desarrolladores de software mas modernos necesitan flexibilidad en el manejo de los datos y Mongo DB lo proporciona.