NoSQL es una tendencia en auge, cada día más y más desarrolladores optan por migrar las bases de datos relacionales de sus proyectos a este nuevo modelo, pero ¿es siempre conveniente hacerlo o sólo nos estamos guiando por una nueva moda? Hoy, nuestro SlashBoy Álvaro Saburido, que ocupa el puesto de Tech Leader Cross en SlashMobility, nos destapa los mitos de este nuevo paradigma y explica cuándo, cómo y por qué es útil desarrollar con noSQL.
Antes de empezar definamos qué significa cada una, y cuáles son sus principales diferencias:
sql
-
Mayor soporte y herramientas debido a que lleva más tiempo en el mercado.
-
Es una tecnología ampliamente conocida y los perfiles que lo conocen son mayoritarios y más económicos.
-
Las bases de dato relacionales llevan una clase de “cabecera” que permite la transaccionalidad entre tablas. Esto significa que si hay un error durante la petición a cualquier nivel de la operación, se devuelve al punto inicial sin comprometer los datos que fueron utilizados durante el proceso.
-
Los datos deben cumplir con el tipo de dato definido en su estructura.
-
No es flexible; todos los objetos ingresados deben tener los mismos campos y estar correctamente validados.
-
El rendimiento y los recursos, mientras más compleja la base de datos y sus relaciones sea debido a la atomicidad, necesita más procesamiento.
-
La escalabilidad es reducida. Una aplicación con SQL requiere un aumento de recursos de hardware que generalmente son bastante costosos para escalar su rendimiento.
Algunas tecnologías SQL conocidas son:
-
MySQL
-
SQlite
-
Oracle
-
PostgreSQL
-
Microsoft SQL Server
nosql
-
Su naturaleza descentralizada permite una alta escalabilidad. NoSQL es muy utilizada de una amplia forma en aplicaciones con Big Data.
-
Más abierta y flexible a diferentes tipos de datos.
-
No necesita altos recursos para ejecutarse. Cualquier servidor con la mínima cantidad de recursos puede correr una base de datos no relacional.
-
Escalabilidad horizontal: son capaces de crecer en número de máquinas en vez de en cantidad de recursos de hardware en una sola máquina.
-
Los datos deben cumplir con el tipo de dato definido en su estructura.
-
La integridad de los datos se ve comprometida por el poco soporte a transaccionalidad, esto la hace más rápida pero menos segura al ejecutar consultas.
-
No hay una estandarización y diferentes compañías poseen su propia solución.
-
Muchas veces son poco compatibles con bases de datos SQL.
-
Suelen tener pocas herramientas de monitoreo y casi todo su mantenimiento se realiza por consola.
Algunas tecnologías NoSQL conocidas son:
-
Cassandra
-
redis
-
CouchDB
¿Cuál usar?
Muchas personas piensan que las tecnologías NoSQL son lo “nuevo” y por lo tanto todo debe migrar a este modelo, pero es un grave error. NoSQL no es un reemplazo, es simplemente un modelo diferente que ofrece ventajas y soluciones a problemas que poseen las bases de datos relacionales.
¿Cuándo debería usar una base de datos NoSQL en mi proyecto?
Si tu proyecto necesita una escalabilidad importante, donde los recursos son escasos (hardware, procesamiento, etc.) y no necesita respetar la integridad de los datos, por ejemplo, una aplicación para IOT con millones de dispositivos reportando valores de sensores, redes sociales o desarrollos de Big Data que presentan retos a las bases de datos tradicionales, entonces sí: NoSQL es la mejor opción