Sean todos bienvenidos a este artículo, en el cual vamos a comentar sobre SQL y NO-SQL y haciendo además una pequeña comparación bastante interesante sobre cuáles son las ventajas de cada uno y cuáles son los beneficios que pueden brindarte como desarrollador.
Tabla de contenido
Explicando sobre SQL
SQL fue desarrollado en IBM por Donald Chamberlin y Raymond Boyce luego de que estos aprendieron el modelo relacional ‘’TedCo’’ al comienzo de los años 90. El nombre original de SQL era ‘’SEQUEL’’, pero por desgracia este ya se encontraba patentado por otra empresa. Luego de que IBM robara SQL con algunos clientes, decidieron empezar a construir herramientas con él, pero no comercializaron los motores de bases de datos hasta finales de los años 70 y comienzos de los 80.
Por suerte Oracle, compañía que en ese entonces se llamada Relational Software, logro ver el potencial tenia esta herramienta y decidió implementarla en un producto que después terminaron creando y que tuvo el nombre de ‘’Oracle V2’’. Una característica que es de gran ayuda en SQL, es que sus datos se guardan en un formato bastante similar al de las planillas en las hojas de cálculo, estando guardadas en columnas y filas.
Para poder relacionar los datos que se encuentran almacenados en distintas tablas, se hace uso de una ‘’llave primaria’’ y una ‘’llave foranea’’. Esto añadiendo el uso de la sintaxis de SQL, que permite al desarrolladortraer los datos del usuario y que los mismos permanezcan unidos en procesos de traslado. La principal ventaja de esto, es que cuando las tablas se modelan en una tercera forma normal, es tremendamente rápido escribir los datos, ya que, si es requerido actualizarlos, no será necesario trabajarlos únicamente en una determinada tabla. Pero en cambio, si lo que deseas hacer es leer datos con esta estructura, podría ser algo más lento que su contraparte ‘’No-SQL’’ por el hecho de que tendremos que buscar los datos no solo en una tabla, sino también a otras distintas, incrementando así el tiempo de trabajo.
Es importante mencionar que esta lentitud solo se verá reflejada en proyectos que manejen grandes bases de datos, ya que en los pequeños esto apenas se notará.
Explicando sobre NO-SQL
Pasando al ‘’No-SQL’’, decimos que sus siglas pueden significar ‘’Not only SQL’’ o ‘’Not SQL’’ y dicho termino fue utilizado por primera vez en el año 1998 por Carlos Trozzi con el fin de darle un nombre a su proyecto de desarrollo. La base de datos de No-SQL en un principio fue muy distinta a la que conocemos hoy en día debido a que, en aquel entonces, este no utilizaba el lenguaje de SQL, aunque si cumplía con un modelo relacional. Un punto curioso a mencionar, es que el mismísimo Carlos Trozzi ha comentado en mas de una oportunidad que las bases de datos SQL de hoy en día, no deberían llamarse No-SQL por no ser motores de base de datos no relacionales.
Otro punto interesante es que estas bases de datos existen desde los años 60 y no se les acuño el nombre de No-SQL hasta haber estado muy adentrados en el siglo 21, lo cual indica que No-SQL es más viejo que SQL.
Como regla general, cuando vamos a modelar base de datos en No-SQL, lo que hacemos son modelos en base a las vistas que tendrá tu aplicación, por ejemplo: si vamos a tener un listado de productos y dentro de este listado también deseas colocar el correo electrónico y también una foto del usuario que los creo, lo tenemos relativamente sencillo con No-SQL en escenarios de este tipo.
El único problema se reflejará cuando el usuario por alguna razón cambia el correo o la imagen, ya que en este escenario el desarrollador estará encargado de tener que actualizar los registros a cada una de las colecciones en donde en un principio se haya guardado el correo y la imagen en cuestión. Esto ultimo nos da a entender que No-SQL podrá ser muy bueno a la hora de leer datos, pero quizás no tanto a la hora de escribirlos, caso contrario a lo que sucede con SQL.
Pero entonces ¿Cuándo son notables estas diferencias?
Las diferencias entre trabajar con SQL y No-SQL claramente dependerán de que tan grande sea la base de datos a modelar, ya que, si los proyectos son pequeños, francamente dará igual cual utilices, pero en caso de que la base de datos sea de un tamaño considerable, entonces la cosa cambia drásticamente por lo mencionado en el anterior párrafo. En estos casos lo ideal es que como desarrollador puedas discernir que será la requerido en tu proyecto, si es que necesitas más lectura o escritura.
En relación a esto también es importante mencionar que tanto SQL como No-SQL, soportan transacciones ‘’ACID’’ (Atomic Consistent Isolate Durable). Estas transacciones son atómicas, lo que significa que cuando vayas a realizar una consulta, esta se compondrá en varias partes, pero, sin embargo, cuando dichas transacciones son enviadas al servidor, este se encargara de que todas estas consultas se ejecuten como si fuese una sola.
En cuanto al termino ‘’Consistente’’, quiere decir que todas las transacciones u operaciones que vayas a realizar dentro de esta base de datos van a ser validas en el sentido de que no se guardara data corrupta, lo cual quiere decir que en la mayoría de casos siempre estarán correctas y no tendrás fallos durante el proceso. Con respecto al termino ‘’Isolate’’ o ‘’Isoladas’’, lo que se quiere dar a entender es que al trabajar con las bases de datos y estemos recibiendo muchos datos distintos a la vez, estos se registraran como si hubiesen sido escritos de manera secuencial, pero siempre ejecutándose de manera asíncrona.
Por ultimo el termino ‘’Durable’’, que nos explica que sin importar el hecho de ejecutar una consulta que tuvo éxito y que después por alguna razón el servidor colapse, nuestros datos no se verán afectados, sino que siempre se encontrarán allí incluso después del incidente.
Esperamos que hayas disfrutado de este interesante articulo sobre las diferencias entre SQL y No-SQL. Como siempre es un honor contar con tu interés y nos vemos en una próxima ocasión.