Si tú eres un desarrollador de Software o estás en el área de la tecnología enfocado en el manejo de datos de alto volumen en un pasado reciente, seguramente sabrás que MongoDB es una base de datos distribuida, basada en documentos y de uso general que ha sido diseñada para la época de la nube; y resaltemos que ninguna otra ofrece un nivel de productividad tan alto.
Es un Motor de NoSQL(no usan SQL cómo lenguaje principal) que provee alta capacidad de almacenamiento permitiendo que la optimización de tus procesos sea a gran velocidad e incremento de la escalabilidad en tus proyectos.
Así pues, MongoDB almacena datos en forma de documentos tipo BSON(formato de intercambio de datos, Binary JSON); este formato usa el paradigma de almacenamiento clave-valor, estos registros se guardan usando una clave que identifica de manera única el registro y se utiliza también para encontrar velozmente los datos dentro de la bd.
Con todo esto, ¿es el momento de cambiar todos nuestros sistemas a las bases de datos No SQL?, pues no es del todo cierto, ya que al ser una tecnología nueva cuenta con ciertas limitaciones y otras incertidumbres en su uso. Por ello, debes realizar un análisis exhaustivo de tu proyecto y establecer qué es lo que más te conviene; cómo las principales diferencias te podemos decir que si tu sistema va a tener un esquema fijo y un alto volumen de transacciones tu mejor opción será un BD relacional tradicional; por el contrario, si necesitas una alta disponibilidad de la información con un esquema inestable es hora de entrar en el mundo No SQL.
Y ante todo lo anterior, es probable que aún queden algunas dudas sobre su usabilidad, es por ello que te lo explicamos a continuación:
¿Cuando usar MongoDB?
Aunque usualmente se diga que las bases de datos NoSQL tienen una aplicación reducida, MongoDB puede ser utilizado en muchos de los proyectos que se desarrollan actualmente; si una aplicación necesita almacenar datos semi estructurados puedes usar MongoDB. Es así como lo hacen las típicas aplicaciones CRUD o de muchos de los desarrollos web actuales.
Aunque las colecciones de MongoDB no necesiten un esquema completamente definido, si es importante que diseñes una aplicación con la cual seguir uno, por eso es importante pensar si necesitas normalizar los datos o no o por el contrario hacer uso de una aproximación híbrida. Son estas las decisiones que pueden afectar el rendimiento de una aplicación. En conclusión, el esquema siempre es definido por las consultas que realizas con frecuencia y MongoDB es especialmente útil en entornos que requieren escalabilidad. Con sus opciones de replicación y sharding, que son muy sencillas de configurar, puedes conseguir un sistema que escale horizontalmente sin demasiados problemas.
¿Cuando no usar MongoDB?
En esta base de datos no existen las transacciones. Aunque la aplicación puede utilizar alguna técnica para simular las transacciones, MongoDB no tiene esta capacidad y sólo garantiza operaciones atómicas a nivel de documento. Si las transacciones son algo indispensable en el desarrollo, deberás pensar en otro sistema.
Tampoco existen los JOINS. Para consultar datos relacionados en dos o más colecciones, debes hacer más de una consulta. En general, si los datos pueden ser estructurados en tablas, y se necesita las relaciones, recomendamos usar un RDBMS clásico.
Y para finalizar, están las consultas de agregación. MongoDB tiene un framework para realizar consultas de este tipo llamado Aggregation Framework. También puede usar Map Reduce. Aún así, estos métodos no llegan a la potencia de un sistema relacional. Si vas a necesitar explotar informes complejos, deberás pensar en utilizar otro sistema. Eso sí, esta es una brecha que MongoDB va recortando con cada versión. En poco tiempo esto podría dejar de ser un problema.
En DBA Experts tenemos experiencia certificada en el correcto uso de estos dos tipos de Bases de Datos, si tienes dudas al respecto puedes contactarnos para recibir la recomendación de nuestros expertos.