Saltar al contenido

¿Qué Tipo de Base de Datos Utilizar? – Parte I

image_print

Autora: Keila Chacón / Centro de Seguridad Informática y Certificación Electrónica (CSICE). FIIIDT.

 

  1. INTRODUCCIÓN

Dando continuidad a los artículos anteriormente desarrollados sobre Base de Datos NoSQL,MongoDB y Big Data se da continuidad la investigación sobre casos de éxito o mejores prácticas utilizando estas herramientas tecnológicas y en qué aspectos se podrá implementar en la Fundación Instituto de Ingeniería (FIIIDT) y otros entes del estado.

Una de las interrogantes más comunes a la hora de definir un nuevo proyecto, tanto para el equipo de desarrollo como para el equipo de planificación y gestión de un nuevo software, app o web, es ¿qué tipo de base de datos debemos usar? En la mayoría de los casos llegan a un consenso no verbal y comienzan a definir un modelo entidad relación para construir una base de datos relacional, y es cuando surge otra interrogante ¿Qué se está dejando a un lado? y es que, en definitiva, las ventajas de una base de datos no relacional pueden traer bastantes beneficios según la naturaleza del proyecto y que son omitidas por el uso y costumbre de las bases de datos relacionales.

Para comenzar a dar respuestas a las interrogantes antes mencionadas, a continuación, se dará a conocer algunos aspectos que debemos considerar en el momento de definir la estructura de un nuevo proyecto de software, características, ventajas y desventajas de las bases de datos NoSQL MongoDB.

  • CONOCIENDO A MONGODB

Cuando hablamos de bases de datos se tienda a pensar en SQL y el modelo de bases de datos relacional, pero existen alternativas como los modelos no relacionales donde MongoDB es quizá el ejemplo más destacado. MongoDB es unsistema de base de datos NoSQL orientado a documentos de código abierto y escrito en C++, que en lugar de guardar los datos en tablas lo hace en estructuras de datos BSON con un esquema dinámico.

  1. CARACTERÍSTICAS DE MONGODB

La principal característica a destacar de MongoDB se encuentra la velocidad, alcanza un balance perfecto entre rendimiento y funcionalidad debido al sistema de consulta de contenidos, a continuación, se detallan otras características [1]:

  • Consultas ad hoc. Se pueden realizar todo tipo de consultas. Podemos hacer búsqueda por campos, consultas de rangos y expresiones regulares. Además, estas consultas pueden devolver un campo específico del documento, pero también puede ser una función JavaScript definida por el usuario.
  • Indexación. El concepto de índices en MongoDB es similar al empleado en bases de datos relacionales, con la diferencia de que cualquier campo documentado puede ser indexado y añadir múltiples índices secundarios.
  • Replicación. Soporta el tipo de replicación primario-secundario. De este modo, mientras podemos realizar consultas con el primario, el secundario actúa como réplica de datos en solo lectura a modo copia de seguridad con la particularidad de que los nodos secundarios tienen la habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de responder.
  • Balanceo de carga. Tiene la capacidad de ejecutarse de manera simultánea en múltiples servidores, ofreciendo un balanceo de carga o servicio de replicación de datos, de modo que podemos mantener el sistema funcionando en caso de un fallo del hardware.
  • Almacenamiento de archivos. Aprovechando la capacidad de MongoDB para el balanceo de carga y la replicación de datos, MongoDB puede ser utilizado también como un sistema de archivos. Esta funcionalidad, llamada GridFS e incluida en la distribución oficial, permite manipular archivos y contenido.
  • Ejecución de JavaScript del lado del servidor. Tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.

  1. MONGODB: VENTAJAS Y DESVENTAJAS

Antes de definir por qué usar MondoDB en un proyecto, conviene revisar pros y contras.

VENTAJAS

  • Ofrece mejores resultados en el momento de manejar grandes cantidades de documentos o base de datos en modo lectura.
  • El costo es muy bajo en compasión a sus competidores, ya que se puede tener un desarrollo funcional con equipos de bajo rendimiento [3].
  • Permite editar y agregar cualquier información nueva a los documentos por separados.
  • Realiza muchas operaciones por segundo reduciendo así los tiempos de respuesta para el usuario.
  • Puede ser escalable y permite mediante el sistema de sharding, distribuir información por diferentes clústeres de máquinas.

DESVENTAJAS

  • No es una solución adecuada para aplicaciones con transacciones complejas [1].
  • No tiene Joins para consultas, la forma de ejecutar este tipo de consultas en MongoDB es realizando más de una consulta.
  • No tiene un reemplazo para las soluciones de herencia.
  • Aún es una tecnología joven, a pesar de estar ampliamente usada en la actualidad, sigue siendo una tecnología joven.

  1. ¿EN QUÉ CASOS ES RECOMENDABLE EL USO DE MONGO DB?

Las bases de datos NoSQL aparecieron con el auge de las redes sociales y el Internet de las cosas con el fin de gestionar los grandes volúmenes de datos de forma rápida y eficaz y su uso esta recomendado para las siguientes tipologías de empresa:

  • Empresas con un volumen de datos muy alto, o picos de tráfico de datos muy frecuentes que generen cuellos de botella.
  • Empresas que cuentan con muchos usuarios/clientes de acceso concurrente y no quieran sufrir la ralentización de los servicios.
  • Empresas con una solución de analítica empresarial, Big Data o Business Intelligence que necesiten acceder a grandes cantidades de información.
  • Empresas con un sistema de datos no homogéneo, donde la inserción de datos a almacenar puede tener campos distintos.
  • Cuando la escalabilidad de una base de datos relacional no es viable a nivel técnico o de costes.

Los casos recomendados en los que se puede optar por un esquema NoSQL son aquellos en los que tenemos un proyecto, sistema o base de datos con la siguiente expectativa de actividad y crecimiento:

  • Una carga de escritura alta, escritura en lotes o una gran cantidad de usuarios haciendo escrituras simultáneamente
  • Disponibilidad inmediata y contra fallos con la posibilidad de tener servidores particionados, incluso en distintas locaciones físicas
  • Crecer rápido y mucho, por lo que se necesitará del escalado horizontal que provea el esquema
  • Data categorizada por locaciones, MongoDB permite consultas espaciales, por lo que podemos buscar datos sobre cierta área geográfica a través de coordenadas de forma bastante sencilla obteniendo resultados óptimos y rápidos
  • Data con un peso masivo (generalmente mayor a 1GB) y el esquema de base de datos restringe su crecimiento y mantenimiento

  1. EN CONCLUSIÓN

En esta primera parte del artículo, se consideró aspectos importantes que se deben manejar en el momento de definir la arquitectura de un proyecto de software, tales como: línea del negocio, tipo de datos almacenar, frecuencia de los usuarios a conectarse, cantidad de información a administrar, entre otros. 

En este sentido, se menciona a MongoBD como base de datos NoSQL para el presente análisis y donde en el próximo artículo se continuará indicando las principales diferencias entre las bases de datos relacionales como MySQL y PostgreSQL con la finalidad de tener una visión objetiva en el momento de responder la pregunta inicial ¿Qué tipo de base de datos utilizar? 

  1. REFERENCIAS

  1. Que es MongoDB. (2019)
         https://openwebinars.net/blog/que-es-mongodb/
  2. Mongo DB o la reinvención en la gestión de datos. (2019)
         https://www.sistel.es/business-platform/mongodb
  3. MongoDB que es y cómo funciona. (2019)
         https://siliconnews.plataformasinc.es/mongodb-como-funciona/
  4. Ventajas y desventajas de MongoDB. (2020).
         https://openwebinars.net/blog/ventajas-y-desventajas-de-mongodb/

 

Contacto: kchacon@fii.gob.ve; jefecentrocsice.1@gmail.com

Compartir en Redes Sociales
0 Shares