Con la evolución de Internet, las redes sociales y el uso de dispositivos móviles, volúmenes masivos de datos con diversos formatos (en su mayoría no estructurados) comenzaron a bombardear a las empresas. Las bases de datos de aplicaciones (SQL) se introdujeron para hacer frente a este aumento con un escalado vertical, pero tenían limitaciones de escalabilidad y agilidad. Entonces, surgieron las bases de datos NoSQL.
Antes de que las bases de datos NoSQL evolucionaran, las bases de datos SQL (relacionales) eran la única opción para gestionar los datos de la aplicación para su almacenamiento. Ahora, hay que elegir entre las bases de datos SQL y NoSQL.
Los arquitectos pueden trabajar con los propietarios de los productos para revisar los casos de negocio y decidir la opción de base de datos basándose en la prioridad entre la consistencia y la disponibilidad de los datos. Para los casos de negocio que priorizan la consistencia sobre la disponibilidad, las bases de datos SQL son la opción preferida. En los casos que priorizan la disponibilidad sobre la consistencia, NoSQL sería una mejor opción.
¿Existe una elección clara entre las bases de datos SQL y NoSQL para un almacenamiento de datos de aplicaciones? ¿Hay casos de uso en los que cualquiera de las dos sea la opción correcta? Si los hay, ¿cómo se decide? A continuación resolveremos estas preguntas.
¿NoSQL puede sustituir a las bases de datos SQL?
Las bases de datos NoSQL se adaptan a:
- Big data o aplicaciones relacionadas con el procesamiento y análisis de grandes cantidades de datos no estructurados
- Aplicaciones que manejan datos estructurados sin transacciones complejas e integridad de datos
- Aplicaciones que utilizan la agilidad continua en el diseño y el enfoque
Las bases de datos SQL son la solución para:
- Aplicaciones con transacciones complejas que requieren la integridad de los datos y que suelen encontrarse en aplicaciones bancarias, financieras, de procesamiento de pedidos y de reserva de vuelos.
- Analítica con datos estructurados
El uso de bases de datos SQL para el almacenamiento y procesamiento de datos no estructurados implica complejidad y sobrecarga en el diseño de la base de datos. Con las bases de datos NoSQL, este esfuerzo de sobrecarga se evita al almacenar y procesar los datos no estructurados tal cual.
Con el tiempo, las bases de datos NoSQL son consideradas para las aplicaciones relacionadas con las transacciones. Especialmente los equipos que querían que el diseño de la base de datos de su aplicación fuera más ágil, es decir, que el diseño de la base de datos evolucionara durante un periodo de tiempo. En estos casos, los desarrolladores se hacen cargo del diseño de la base de datos, ya que casi todo está dentro de la base de código.
Así, las bases de datos SQL y NoSQL no se sustituyen entre sí. La elección depende del caso de uso en cuestión, es decir, transaccional frente a no transaccional, datos estructurados frente a no estructurados y la naturaleza de la agilidad de la aplicación.
¿NoSQL es adecuado para aplicaciones empresariales con usuarios finales interactivos?
NoSQL también puede utilizarse para aplicaciones interactivas de clientes habituales, a condición de que el caso de uso del negocio sea decente con la consistencia eventual. Como por ejemplo:
- Las aplicaciones que pueden soportar fallos (pérdida de datos menores, retraso en la replicación, lectura de escritura sucia, etc.) pueden utilizar bases de datos NoSQL
- Las aplicaciones para las redes sociales, los juegos móviles y web, y el streaming eligen NoSQL por su necesidad de escalabilidad frente a la consistencia. Estos tipos de aplicaciones funcionan bien con la consistencia eventual
- Aplicaciones en las que las interacciones de los usuarios pueden dividirse en combinaciones de transacciones en línea y fuera de línea
¿Cómo puede funcionar el diseño de bases de datos sin esquema para las aplicaciones interactivas de los usuarios?
NoSQL es por definición una base de datos sin esquema. Se creó para almacenar datos no estructurados o semiestructurados. Cuando se usa para aplicaciones en las que se producen interacciones sincronizadas con el usuario, requiere una estructura. También requiere una sobrecarga en el nivel de código de la aplicación para gestionar la integridad referencial como restricciones, tales como clave externa y única, ya que no se puede definir en el nivel de la base de datos para las bases de datos NoSQL.
Las aplicaciones de interfaz de usuario que implican transaccionalidad también pueden utilizar bases de datos NoSQL si la base de usuarios es interna a la empresa y el flujo de interacción con el usuario es sencillo. El código de estas aplicaciones puede gestionar la transaccionalidad sin mucha complejidad.
¿Cuál es el ganador?
Las bases de datos SQL y NoSQL tienen diferentes propósitos.Las bases de datos SQL siguen siendo las preferidas para las aplicaciones en las que están en juego las transacciones y la integridad de los datos.
Las bases de datos NoSQL se convirtieron en la opción preferida para las aplicaciones con grandes volúmenes de datos no estructurados. Las aplicaciones con datos estructurados también empezaron a aprovechar las bases de datos NoSQL cuando no hay suficiente gestión de transacciones.
Los arquitectos de aplicaciones o datos son los que mejor pueden elegir la base de datos en función del caso de uso de la empresa, ya que la naturaleza del almacenamiento de datos cambia. Así, la huella de la aplicación en una plataforma puede acabar utilizando una mezcla de bases de datos SQL y NoSQL.
Conclusión
Las bases de datos NoSQL estaban limitadas a unos pocos casos, como la gestión de grandes datos para el análisis. Con el tiempo, las bases de datos NoSQL evolucionaron de forma similar a las bases de datos SQL en términos de herramientas de gestión de bases de datos. Esta evolución hizo que los arquitectos de datos consideraran las bases de datos NoSQL también en el desarrollo de aplicaciones.
El procedimiento recomendado para los arquitectos de aplicaciones y datos debería ser evaluar ambas opciones de bases de datos SQL y NoSQL para cualquier diseño de aplicación. Así, el desarrollo de aplicaciones puede aprovechar el comportamiento ágil de las bases de datos NoSQL si el diseño se finaliza con esta opción.
¿Cómo Nisum puede ayudar?
Nisum tiene una amplia experiencia en el diseño e implementación de sistemas que utilizan bases de datos SQL y NoSQL. Nisum ha ayudado a sus clientes a tomar la decisión correcta entre SQL y NoSQL mientras construían nuevas aplicaciones y migraban aplicaciones heredadas existentes a nuevas plataformas técnicas. Nuestra experiencia se extiende a través del desarrollo y la analítica mediante el uso de bases de datos SQL y NoSQL. Para saber más sobre nuestros servicios, contáctanos.