SQL vs NoSQL: respondemos tus preguntas sobre bases de datos

6 min read
8 de junio de 2023

Recientemente dimos una charla sobre las características de las bases de datos SQL y las NoSQL, sus ventajas, desventajas y casos de uso en los que podríamos aplicar una u otra.

De esta sesión, que pueden ver aquí, surgieron varias inquietudes que no alcanzamos a responder con toda la minucia del caso y nos gustaría invitarlos a ver las respuestas en esta entrada. Recuerden que siempre podremos continuar la conversación por nuestras redes y también me pueden buscar en LinkedIn como juanvalois.

¿Antes de realizar el diseño de base de datos, es fundamental realizar el modelado conceptual de datos antes?

Es importante que nos ubiquemos en el proceso de desarrollar software, y como tal, de los sistemas y subsistemas que componen este ejercicio. En este proceso es necesario pasar por las  siguientes etapas:

  1. Analizar las condiciones en las que deberá desempeñarse nuestro desarrollo.
  2. Diseñar una solución que permita cubrir la mayor cantidad de escenarios que puedan considerarse en la etapa anterior.
  3. Implementar de manera efectiva lo que sea que el diseño, como hoja de ruta, nos indique.
  4. Probar finalmente que todos los componentes se están comunicando de manera adecuada y efectivamente están realizando las tareas por las cuales fueron configurados o construidos.

Ya habiendo interiorizado estos pasos, nos ubicamos en la etapa de diseño, para hablar precisamente del diseño de bases de datos. Es justamente aquí donde hablamos del modelado de datos, que puede ser: conceptual, lógico o físico. Las tres perspectivas tienen propósitos específicos y entregan detalles de los sistemas de bases de datos desde visiones diferentes, que al unirlas, le permiten al administrador de base de datos, construir de la manera más efectiva, este sistema de almacenamiento.

Así como existe el modelo de entidad relación para SQL ¿se hace lo mismo para NoSql ?

Un modelo entidad relación, efectivamente, es  el resultado de diseñar bases de datos relacionales o SQL. Para diseñar bases de datos NoSQL, que pueden ser mal llamadas "no relacionales", podemos hablar de los siguientes enfoques:

  • Análisis de casos de uso: Al igual que la primera etapa del proceso de desarrollo de software, este enfoque pretende identificar los requisitos y modelarlos mediante casos de uso. Este proceso se hace identificando los tipos de consultas y operaciones que deben realizarse con mayor frecuencia para el almacenamiento de los datos. Aquí es donde analizar el ciclo de vida de los datos permitirá identificar mejor la tecnología NoSQL para persistir la información.

  • Denormalización: A diferencia de las bases de datos relacionales, en las bases de datos NoSQL se permite y fomenta la denormalización de datos. Esto significa que se pueden duplicar datos o combinarlos en estructuras más complejas para optimizar las consultas y el rendimiento.

    Sería posible tener todos los datos de una misma aplicación en una misma tabla, pero ahí es donde empezamos a hablar de particionar los datos en porciones más adecuadas para hacer las consultas.

  • Diseño orientado a consultas: Es un enfoque que busca trasladar el modelado de los datos, de las entidades y sus relaciones, a las operaciones que realizarán entre ellas, y esto se traduce en las consultas. Todo lo anterior implica modelar los datos de manera que las consultas más importantes sean eficientes y rápidas de ejecutar.

  • Escalabilidad y distribución: Como bien lo mencionamos durante la charla, las bases de datos NoSQL son perfectas para escalar horizontalmente, pero con esto también se presentan retos de modelado en cuanto a la distribución y acceso a los clústeres, lo que afectará los tiempos de replicación de los datos en la red de servidores.

  • Pruebas y ajustes iterativos: Las bases de datos NoSQL están pensadas como tecnologías perfectas para manejar grandes volúmenes de datos, que deben almacenarse a grandes velocidades y que podrían llegar a ser bastante diversos. Estos tres aspectos hacen que sea bastante variable el entorno de datos que deben soportar, lo que conlleva a tener que tomar decisiones muy rápidas sobre los datos, con las tecnologías que se puedan manejar.

¿Cuál tienen más demanda por parte de empresas, B.D. NoSQL o la B.D. SQL?

Como lo mencionamos durante la charla, los sistemas de bases de datos están para proporcionarnos mecanismos efectivos y seguros de almacenamiento de datos para todos nuestros sistemas digitales. Por esta razón, hablar de un tipo de base de datos u otro como mejor o peor, minimiza el poder que podrían tener trabajando juntos, en esquemas de bases de datos políglotas. Todo finalmente recaerá en el caso de uso específico.

¿Cuáles son los principales desafíos asociados con la gestión de grandes bases de datos SQL y NoSQL y cómo se pueden abordar?

Al igual que cuando nos enfrentamos a grandes problemas, y debemos dividirlos para solucionarlos de forma consistente y quizás con abordajes específicos para cada parte del problema, lo mismo ocurre con la gestión de grandes volúmenes de datos y por ende las bases de datos donde los almacenamos.

Al final los datos residirán en nuestros sistemas partiendo de lo que podríamos llamar requisitos no funcionales. Algunos de ellos para tener en cuenta son:

  • Rendimiento y escalabilidad: A medida que una base de datos crece en tamaño y la carga de trabajo aumenta, el rendimiento puede verse afectado. Para abordar este desafío, se pueden aplicar técnicas como el ajuste de consultas y la optimización de índices en bases de datos SQL. En bases de datos NoSQL, se pueden distribuir los datos en clústeres y utilizar técnicas de particionamiento horizontal para mejorar la escalabilidad.

  • Mantenimiento y administración: Con bases de datos grandes, la tarea de mantenimiento y administración puede volverse compleja. Automatizar tareas rutinarias, como copias de seguridad, monitoreo y ajustes en el rendimiento, pueden ayudar a simplificar la gestión. Además, el uso de herramientas de administración y monitorización específicas para cada tipo de base de datos puede facilitar estas tareas.

  • Consistencia y coherencia: Mantener la consistencia de los datos en bases de datos distribuidas puede ser desafiante. En bases de datos SQL, se pueden aplicar transacciones y bloqueos para garantizar la integridad de los datos. En bases de datos NoSQL, es posible utilizar modelos de coherencia específicos y técnicas como la replicación de datos y la sincronización de relojes distribuidos para mantener la consistencia.

  • Seguridad: Es importante implementar medidas de seguridad adecuadas, como el acceso basado en roles, cifrado de datos y auditoría de registros. Además, es fundamental seguir las mejores prácticas de seguridad (una buena base de buenas prácticas puede ser OWASP) y mantenerse actualizado con las actualizaciones y parches de seguridad del sistema de gestión de bases de datos, en caso que nuestro sistema dependa de que lo realicemos manualmente.

  • Resiliencia de los sistemas de base de datos: Con bases de datos grandes, realizar copias de seguridad regulares y garantizar la capacidad de recuperación ante fallos se vuelve fundamental. Implementar una estrategia de copia de seguridad adecuada, como realizar copias de seguridad incrementales o diferenciales, y probar regularmente los procedimientos de recuperación, puede ayudar a mitigar el riesgo de pérdida de datos.

Si bien una organización puede tener ambas, según su experiencia y dado que primero tuvieron su base de datos transaccional, ¿qué es lo que colocan en su NoSQL?

Después de tener un correcto modelado de la base de datos, es posible optimizar partes del sistema, en aras a lograr mejores tiempos de respuesta.

En un caso hipotético, una organización requiere enviar grandes cantidades de datos a un cliente que desea consultarlos a través de una API. Hoy el sistema funciona a la perfección para procesar los datos de las consultas, pero tiene un único inconveniente:  la cantidad de datos que se han venido almacenando, con el transcurrir del tiempo, ha ido deteriorando los tiempos de respuesta de las consultas y por ello la organización se ve en la necesidad de optimizar la base de datos para poder procesar estos datos, o migrarse a otro tipo de base de datos que le permita exponer la información requerida casi de inmediato.

Llegados a este punto, se puede pensar en  implementar un tipo de base de datos clave-valor, que perfectamente podría pasar a través de una API sin necesidad de algún tipo de transformación durante la transmisión. Al final todo dependerá del caso de uso y la facilidad de migración de los datos legados, si el modelado de datos les ha dado la estructura adecuada para poder hacer estos cambios.

Teniendo en cuenta todo lo anterior, ¿cuál sería el roadmap para iniciar como Ingeniero de datos?

Basados en las habilidades que buscamos dentro de nuestro equipo de datos para nuestros ingenieros, esta ruta de aprendizaje puede ser la adecuada para que nos acompañen a aprender, idear y construir soluciones de big data para nuestros clientes:

  • Fundamentación    
    Codificación y Estructuras de Datos
    Programación orientada a objetos
    Programación funcional
    Code Testing
    Frameworks
    Terminales y linea comandos
    GIT
    Ciclo de vida del dato

    Cloud computing
  • Networking y Protocolos
  • Ingesta de Datos
    ETL - ELT

    Tipologias de datos
    Batch & Streaming
  • Modelamiento y Almacenamiento de Datos    
    Fundamentos de bases de datos
    Bases de datos Relacionales
    Bases de datos No Relacionales
    Bodegas de datos
    Data Lakes
  • Procesamiento de datos    
    Computación Distribuida
    Procesamiento Batch
    Procesamiento Hibrido
    Procesamiento Streaming
    Calidad de Datos
    Mensajeria
    Orquestación y Flujos de trabajo
  • Automatizacion y Observabilidad    
    DevOps
    DataOps
    Infraestructura como Codigo
    Contenedores
    Orquestación de Contenedores
  • Seguridad     
    Identidades & Control de Acceso
    Privacidad del dato
  • Complementarios o Deseables    
    Gobierno de Datos
    Arquitectura de Datos
    Machine Learning
    Visualización de Datos

Aprovecho este espacio para agradecer por su participación. De seguro contaremos con más charlas de este tipo en las que podremos desarrollar tecnologías específicas con más detalle.

Mientras llega ese momento pueden consultar nuestras ofertas de trabajo y los recursos para seguir aprendiendo que pueden encontrar en nuestro blog. 

¡Hasta la próxima!

scrum_metodologia_agil_ebook

 

Suscríbete al
Blog Pragma

Recibirás cada mes nuestra selección de contenido en Transformación digital.

Imagen form