clicko-informatica-sql-vs-nosql

Los sistemas de bases de datos se clasifican mayormente en tres tipos: Las bases de datos relacionales, las orientadas a objetos, y las relacionales orientadas a objetos. Sin embargo, pronto nos dimos cuenta que, en la práctica, la mayoría de los motores de bases de datos más populares se basan en la arquitectura relacional, y todos ellos utilizan el lenguaje de consultas SQL (con variaciones) para tratar con los datos.

Con el paso del tiempo SQL se convirtió en el lenguaje de consultas por defecto en la mayoría de sistemas informáticos.

¿Entonces… por qué aparecen los sistemas NoSQL? Con la llegada de la web, el software como servicio, los servicios en la nube, las startups y aplicaciones de éxito con millones de usuarios llegaron los problemas de alta escalabilidad y rendimiento. Los sistemas relacionales se pueden adaptar para hacerlos escalar incluso en los entornos más complejos, pero a menudo, se hacen cada vez menos intuitivos a medida que aumenta la complejidad: consultas complejas que asustan y poco eficientes.

Los sistemas NoSQL intentan atacar este problema proponiendo una estructura de almacenamiento más versátil, sin esquema de datos en los registros que permite una escalabilidad sencilla y una velocidad sorprendente (aunque no en todos los casos).

SQL vs. NoSQL

En sistemas no relacionales los datos no tienen una definición de atributos fija. Cada registro (o documento, como se les suele llamar) puede contener una información con diferente forma cada vez, pudiendo así almacenar sólo los atributos que interesen en cada uno de ellos. Además se pueden almacenar estructuras de datos múltiples en un mismo documento facilitando la claridad y el rendimiento: no hay que hacer JOINs para obtener las relaciones ya que se encuentran en el mismo documento. Por poner un ejemplo: almacenar la información sobre un blog (título, cuerpo de texto, autor, etc) junto a los comentarios y etiquetas, todo volcado en un único registro o documento.

Un motor de base de datos no-relacional permite aumentar el rendimiento del sistema simplemente añadiendo más nodos, sin necesidad en muchos casos de realizar ninguna otra operación más que indicar al sistema cuáles son los nodos disponibles. Por último, muchos de estos sistemas realizan operaciones directamente en memoria, y sólo vuelcan los datos a disco cada cierto tiempo.

Esto permite que las operaciones de escritura sean realmente rápidas.

Algunas de las implementaciones de bases de datos NoSQL mas conocidas:

Mongo DB

Cassandra

Redis

Couch DB

Dynamo

Neo4j

En un próximo artículo os hablaré de una implementación concreta de un motor de base de datos no relacional que cada vez es más usado: MongoDB.

Facebook
Facebook
LinkedIn
Full stack engineer - Analista programador Web

Full Stack Engineer – Analista Programador Web