MongoDB: Características y futuro

Todos sabemos que la información que internet genera es cada día mucho mayor que el anterior. También que la empresa que sea capaz de extraer el valor que esos datos guardan podrá tomar decisiones estratégicas más acertadas y ofrecerá a sus clientes mejores productos. Por lo tanto, la rapidez en el almacenado y en el análisis de esa información es muy importante. Muchos de los datos que hoy surgen no son estructurados, por lo que necesitamos bases de datos capaces de almacenarlos y procesarlos de la forma más rápida posible. Es en este ámbito en el que surge MongoDB. MongoDB es la base de datos NoSQL líder del mercado. Vamos a ver por qué:

  • Da respuesta a la necesidad de almacenamiento de todo tipo de datos: estructurados, semi estructurados y no estructurados.
  • Tiene un gran rendimiento en cuanto a escalabilidad y procesado de la información.
  • Puede procesar la gran cantidad de información que se genera hoy en día (millones de usuarios utilizando las mismas aplicaciones, redes sociales que crecen sin parar, internet de las cosas, cloud computing, etc).
  • Se adapta a las necesidades actuales de las aplicaciones (millones de usuarios, miles de peticiones por segundo, etc).
  • Permite a las empresas ser más ágiles y crecer más rápidamente, crear nuevos tipos de aplicaciones/productos, mejorar la experiencia del cliente y reducir el tiempo de manufacturado o desarrollo del producto, reduciendo así los costes.
  • Está orientada a documentos. Lo que quiere decir que en un único documento es capaz de almacenar toda la información necesaria que define un producto, un cliente, etc, aceptando todo tipo de datos (incluidos arrays y otros subdocumentos). Todo ello sin tener que seguir un esquema predefinido.
  • Permite adaptar el esquema de la base de datos a las necesidades de la aplicación rápidamente, disminuyendo el tiempo y coste de la puesta en producción de la misma. Esto es así porque permite modificar el esquema desde el código de la aplicación, sin tener que realizar labores de administración de la base de datos como estaríamos obligados a hacer con las bases de datos relacionales.
  • Da a los desarrolladores todas las funcionalidades que tienen las bases de datos relacionales (como índices sobre campos secundarios, un completo lenguaje para realizar las consultas, etc).

Estas son sus principales características:

  • De propósito general, casi tan rápida como las bases de datos NoSQL de tipo clave:valor, y con casi todas las funcionalidades de las bases de datos relacionales
  • Alta disponibilidad
  • Escalabilidad: desde un servidor aislado a arquitecturas distribuidas de grandes clusters (Permite particionar, de manera transparente para el usuario, nuestra base de datos en tantas como shards tengamos. Esto aumenta el rendimiento del procesado de los datos al ser cada una de ellas más pequeña que la original)
  • Aggregation Framework– Procesamiento batch de datos para cálculos agrupados usando operaciones nativas de MongoDB
  • Auto balanceado de carga a través de los distintos shards. El balanceador decide cuándo migrar los datos, y a qué Shard, para que estén uniformemente distribuidos entre todos los servidores del cluster. Cada shard aloja los datos correspondientes a un rango de la clave escogida para particionar nuestra colección.
  • Replicación nativa: sincronización de datos entre servidores
  • Seguridad: autenticación, autorización, etc
  • Gestión avanzada de usuarios
  • Automatic failover: elección automática de un nuevo primario cuando este se ha caído
  • Es capaz de actualizarse sin dejar de dar servicio
  • No tiene los cuellos de botella que se producen en las bases de datos relacionales (RDBMS) al procesar grandes cantidades de información
  • Utiliza objetos JSON para guardar y transmitir la información. JSON es el estandar web hoy en día, por lo que supone una gran ventaja que web y base de datos hablen el mismo lenguaje.
  • Permite realizar consultas y cálculos espaciales, tanto en 2D como en 3D
  • Permite utilizar Map-Reduce para el procesado de la información a través de funciones JavaScript que se ejecutan en los servidores
  • Puede almacenar y ejecutar funciones JavaScript en el servidor
  • Tiene una potente herramienta web que nos permite monitorizar todo lo que pasa en nuestras bases de datos y en nuestras máquinas, MongoDB Management Service (MMS):
    • Monitorización
      • MMS vigila continuamente la base de datos y los aspectos más importantes del hardware de nuestro servidor
      • A través de un panel web configurable podemos seguir y optimizar nuestra base de datos
      • Alertas configurables: Nos permiten descubrir problemas antes de que afecten el funcionamiento de nuestra aplicación
    • Backup
      • Backup continuo con recuperación point-in-time de las distintas replica set y sharded clusters
      • Guarda múltiples copias de cada backup en distintos data centers (distribuidos geográficamente y tolerantes al fallo)
    • Automatización de tareas (próximamente):
      • Configura rápida y fácilmente servidores MongoDB aislados, replica sets o sharded clusters
      • Actualizaciones en caliente sin pérdida de servicio

En resumen, MongoDB ha sido diseñada para que sea rápida (por ejemplo, sustituye los joins por documentos embebidos), flexible (sin rígidos esquemas de datos), escalable (utiliza escalabilidad horizontal dejando atrás la vertical), para reducir al mínimo las labores de administración (replication, disaster recovery, automatic failover, sharding, load balancing, etc), para que a los programadores les resulte fácil de aprender y dotada de potentes herramientas de análisis de datos (aggregation framework). Grandes compañías como Telefónica, Bosch, Coca Cola, CISCO, Leroy Merlin, ebay, IBM, Forbes y muchas otras, ya utilizan MongoDB, ciudades como Chicago ya utilizan un sistema compuesto por MongoDB y Hadoop para analizar y tomar rápidas decisiones con el propósito de conseguir mejorar la calidad de vida de sus ciudadnos. Por supuesto, los grandes proveedores de servicios de computación en la nube (cloud computing) ya ofrecen MongoDB entre sus productos: Amazon Web Services, Google Cloud Platform, Microsoft Azure, etc. Como hemos podido comprobar, el crecimiento de MongoDB es imparable. En próximos posts aprenderemos más sobre las características y posibilidades de esta gran base de datos.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

dos × tres =