Los beneficios de las bases de datos NoSQL

Luis Felipe Mesa
31 de agosto de 2018
5 min. de lectura

Los retos competitivos y disruptivos que enfrentan las organizaciones hoy, las llevan a explorar nuevas alternativas tecnológicas que les permitan avanzar hacia el cumplimiento de sus objetivos de negocio de cara a su estrategia corporativa. Una de las alternativas que cada vez gana más aceptación, es la utilización de bases de datos NoSQL.

Cada día son más las organizaciones que como consecuencia de su transformación digital hacen presencia en Internet para hacer parte de la economía digital en la cual vivimos, para ofrecer productos y servicios en un mercado creciente de clientes y prospectos.

La base de la economía digital se encuentra en responder ágilmente a las necesidades del mercado, a través del aprovechamiento de conceptos y tecnologías tales como: la nube, la movilidad, las redes sociales, la automatización de procesos y el análisis de grandes volúmenes de datos (Big Data).

Impulsar la presencia de las organizaciones en esta economía requiere que la infraestructura que  soporta los productos y servicios de negocio, permita manejar un gran número de usuarios concurrentes, teniendo en cuenta el aumento del  número de consumidores digitales de las plataformas móviles y productos interconectados que obedecen al concepto de Internet de las cosas.

Para mantener los tiempos de respuestas en cantidades que permitan a los usuarios vivir una excelente experiencia con el servicio ofrecido; manejar datos estructurados, semi estructurados y no estructurados sin incrementar la complejidad en el manejo de uno u otro; la infraestructura debe estar siempre disponible para soportar los servicios de negocio y debe permitir que la organización se adapte rápidamente a los cambios necesarios.

Por qué nacieron las bases de datos NoSQL

Las bases de datos NoSQL (Not Only SQL) nacieron como respuesta a la necesidades crecientes de las organizaciones para soportar requerimientos propios del desarrollo de aplicaciones modernas que no son cubiertas por las bases de datos relacionales o cuya implementación implica la inversión de gran cantidad de dinero y tiempo. Entre estas necesidades encontramos:

  • Soportar diferentes estructuras de datos sin incrementar la complejidad en su manejo.
  • Escalar para soportar una gran cantidad de usuarios concurrentes a costos competitivos para una organización  (Aprovechando la computación en la nube).
  • Capacidad  de manejar grandes volúmenes de información con datos estructurados, semi estructurados y no estructurados provenientes desde diferentes fuentes de información.
  • Mantener las aplicaciones con un nivel de respuesta adecuado ante el aumento de la carga que reciben los sistemas.
  • Tolerar y responder a las fallas en los sistemas, teniendo en cuenta que las fallas son  inevitables. Sin embargo, estas deben manejarse adecuadamente para recuperarse rápidamente y así evitar caídas o indisponibilidades del sistema.
  • Acoplarse al desarrollo ágil con entrega incrementales que hoy hace parte de la cultura en los equipos de implementación de sistemas.

Las ventajas de esta tecnología

Después de ver algunas de las necesidades que las bases de datos NoSQL buscan cubrir, ahora hablaremos sobre algunos ideas fundamentales en las que se basan pasa solventar estas necesidades y ofrecer beneficios frente a las bases de datos tradicionales.

Posibilita el desarrollo ágil

Con la intención de proporcionar funcionalidades de valor tanto a sus clientes como a los empleados, las organizaciones han adoptado e interiorizado el uso de las metodologías ágiles con las cuales puedan entregar funcionalidades y oportunidades de negocio de manera incremental e iteractiva, reduciendo el tiempo de entrega de valor de años, a meses, semanas o incluso días.

Esto crea la necesidad en equipos de desarrollo de contar con herramientas que les permitan avanzar en las implementaciones conforme a la metodología, las cuales traen como consecuencia el constante cambio, incremento o evolución del modelo de datos implementado.

Incrementar constantemente el modelo de datos para iterativamente soportar una nueva funcionalidad, se vuelve tedioso y es casi una barrera hacerlo con bases de datos relacionales, sobre todo cuando el modelo de datos es nuevo y se debe crear a medida que se construye la aplicación.

Las bases de datos relacionales se basan en un modelo de datos fijos, en la cual con anticipación se debe definir el esquema o la definición de la estructura de datos que va almacenar.

Cuando se desarrolla con metodologías ágiles, donde constantemente los requerimientos cambian, el modelo de datos también lo hace, lo cual implica que en bases de datos relacionales se deba cambiar el esquema, lo que  se complica para el equipo ágil cuando estos cambios no los realiza el mismo equipo sino otra área de la organización, la cual posiblemente maneje otros tiempos de atención, eso se traduce en demoras en el desarrollo.

Adicional a esto, las bases de datos NoSQL facilitan la labor de implementación de sistemas porque permiten el almacenamiento del modelo de datos que se manejan a nivel de la aplicación, sin la necesidad de transformar estas estructuras al modelo de tablas de las bases de datos relaciones. Esto se conoce como Object-relational impedance mismatch.

La siguiente imagen muestra un ejemplo del modelo de datos en la base de datos NoSQL MongoDB.

NoSQL MongoDB.

En el marco del agilismo podríamos suponer que la estructura de datos anterior, es el resultado del sprint 1 del proyecto, el cual incrementalmente se va actualizando conforme avanza el proyecto, tal como muestra la siguiente imagen.

sprint 1

Replicación de la información

Con el fin de mantener la disponibilidad de la información y hacerla tolerante a fallas, las bases de datos NoSQL soportan mecanismos de replicación de los datos, con la posibilidad de distribuir la base de datos en diferentes áreas geográficas, mejorando la responsividad de las aplicaciones al localizar las fuentes de datos a áreas más cercanas de los usuarios que las acceden.

La capacidad de replicar la información viene incluida como una funcionalidad de las bases de datos NoSQL y a diferencia de las bases de datos relacionales no requiere la adquisición de productos adicionales o grandes inversiones para suplir esta necesidad.

A continuación, se muestra un ejemplo de réplica en una base de datos NoSQL MongoDB.

grafica_blog

Escalar horizontalmente para soportar mayor cantidad de usuarios concurrentes

Los sistemas y servicios de las organizaciones cada vez más se ven enfrentadas a un número mayor de usuarios concurrentes y manejo de grandes volúmenes de información, lo cual implica que para mantener el rendimiento de sus aplicaciones de forma eficiente deben escalar las aplicaciones ya sea verticalmente y/o horizontalmente.

En el caso de las bases de datos, estas se escalan para mantener o aumentar las capacidades de lectura, escritura y/o almacenamiento. Tarea que en una base de datos relacional es compleja, demorada y/o costosa.

Por otro lado, las bases de datos NoSQL fueron diseñadas para escalar horizontalmente sobre hardware de bajo costo, haciendo uso en muchos casos de infraestructura en la nube, dando la posibilidad de escalar la base de datos sobre demanda, incrementando la infraestructura cuando la carga aumenta, y reduciendola cuando esta disminuye.

En conclusión, las organizaciones tienen el desafío y la oportunidad de participar de la economía digital para no quedarse atrás frente a otros competidores que aprovechan las tecnologías modernas para entregar mejores servicios a una población mayor de clientes que dependen cada vez más en su día a día de sistemas informáticos.

Para hacer frente a este incremento de usuarios, las organizaciones necesitan de tecnologías de bases de datos que permitan almacenar mayor cantidad de información y recuperar grandes volúmenes de datos con bajos tiempos de respuesta a un costo bajo de infraestructur y, que puedan adaptarse fácilmente a la demanda que reciben.

Las bases de datos NoSQL aparecen precisamente para cubrir estas necesidades, ayudando en la construcción de sistemas tolerantes a fallas, altamente disponibles y que sean capaces de procesar grandes volúmenes de datos de diferentes fuentes y distintos formatos.


Nuevo llamado a la acción

Suscríbete