¿SQL o NoSQL? ¿Cuál base de datos es mejor?

Mientras las bases de datos SQL tienen como prioridad la integridad de los datos, las NoSQL priorizan el rápido acceso a ellos. Pero, ¿Cuál es mejor? Te lo explicaré todo en este blog.

Diseño web
8 minutos
Hace 2 años
¿SQL o NoSQL? ¿Cuál base de datos es mejor?

¡Accede a cientos de cursos
con solo un pago al año!

Blog Microbanner

La vida está dominada por los datos: tu cumpleaños, tu talla de pantalón, la dirección de tu casa, entre otras cosas. Imagina una vida sin datos. Incluso nuestros antepasados los necesitaban: ¿Cómo cazar un mamut? ¿Cómo fabricar lanzas? ¿Qué plantas son venenosas? ¿Cómo protegerse del frío? Sin datos nuestra vida sería imposible de vivir.

Nuestros antepasados guardaban la información en su memoria y la transmitían de boca en boca, de generación en generación. Este método tenía un problema: la información iba transformándose, y con el tiempo, se creaban los mitos y las leyendas. A medido que pasaba el tiempo, se inventó la escritura, que evitaba que la información se vaya a distorsionar. La frase “las palabras se las lleva el viento, lo escrito queda” viene del antiguo imperio romano, hace dos mil años. Nuestra cultura e historia está asentada en la escritura.

Casi dos mil años después, en la década de 1950, se crean las primeras computadoras y, aunque era gigantescas, su función era la misma que las actuales: procesar y manipular datos. Guardar esos datos en un soporte que los conserve, es a la tecnología, lo que la escritura al ser humano. Al inicio, se escribía y se leía la información en cintas magnéticas de forma secuencial, un proceso que tardaba mucho tiempo porque, suponiendo que se escribiera el alfabeto, tendrías que pasar por la A, la B, la C hasta llegar a la Z en lugar de ir directamente a ella.

Computadora-IBM-726-almacenaba-memoria-cintas-magneticas-1952.jpg

Es en los años 70 se creó el primer modelo de bases de datos, un sistema para almacenar y consultar la información de forma eficiente, que aseguraba la integridad de los datos. Este es el modelo relacional (o SQL) y dominaría la tecnología por décadas.

Hacia los años 2000 aparece un nuevo tipo de bases de datos: las NoSQL (desde su nombre niegan el concepto SQL). En ese tiempo, la web explota y empresas como Google, Amazon o Facebook necesitan un acceso ultra rápido a su información que no era posible con el modelo SQL.

Mientras las bases de datos SQL tienen como prioridad la integridad de los datos, las NoSQL priorizan el rápido acceso a ellos, aún a costa de sacrificar la integridad de los datos. Entonces, ¿Qué es mejor? ¿la velocidad? ¿o asegurarnos que los datos sean correctos? Como todo: depende. En este blog te explicaremos la diferencia entre SQL y NoSQL con el estilo y la calidad de EDteam.

Bases de datos SQL (relacionales)

Las bases de datos SQL (o relacionales) organizan la información en tablas, como hojas de Excel, y cada tabla se usa para guardar un tipo específico de información para asegurar que no se repita.

Por ejemplo, imaginemos que vamos a registrar todos los cursos en EDteam y los profesores que los dictan. Podríamos hacer una lista de cursos y poner el profesor a cada lado y estaría resuelto. Pero hay un pequeño problema, si un profesor dicta más de un curso, tendríamos su nombre repetido en el listado.

Y se pone peor, imagina que cometimos un error al escribir el nombre del profesor, para corregirlo, habría que hacerlo en todos los lugares donde aparece y si nos equivocamos una sola vez, jodemos todo. Ahora imagina que también queremos registrar los estudiantes de cada curso, puesto que un curso tiene varios estudiantes, y un estudiante puede tomar varios cursos, entonces ya tenemos un problema.

Esta es una tarea para las bases de datos SQL.

base-de-datos-relacionales-sql-edteam.png

En las bases de datos relacionales (o SQL) se crea una tabla separada para cada entidad (las entidades son todo concepto que es independiente de los demás). En nuestro ejemplo, tendríamos tres entidades: cursos, profesores y estudiantes. Por lo tanto, crearemos tres tablas (una para cada entidad). Si queremos mostrar los cursos que dicta un profesor, la obtenemos creando una relación entre ambas tablas, lo mismo para obtener todos los estudiantes de un curso.

bases-de-datos-sql-edteam.png

Gracias a esta forma de organizar los datos, evitamos que se repitan (redundancia) y garantizamos la integridad de los mismos. Es decir, no solo no tendremos más datos duplicados, sino que si se modifican, será visible en todos los lugares en que el dato aparezca. Este proceso se conoce como normalización de bases de datos.

Las tablas tienen registros y campos. Cada registro es un elemento nuevo de la entidad mientras que los campos son los atributos de esa entidad. Por ejemplo, la tabla profesores puede tener los campos: Nombres, Apellidos, País, Correo electrónico y cada vez que agregamos un nuevo registro (como un profesor nuevo), debemos llenar esos campos con la información correspondiente.

tabla-bases-de-datos-sql-edteam.png

Las tablas tienen, además, claves foráneas (o Foreign Keys) que es un campo que permite crear las relaciones entre tablas y restringir las operaciones entre los datos de ambas, por ejemplo, no borrar un usuario si tiene facturas. Las foreign keys son una de las características más importantes de las bases de datos SQL y como habrás notado, este modelo se preocupa mucho por la integridad de los datos.

Origen del término SQL

En los años 70, Frank Codd propone el modelo relacional para organizar la información en tablas y relaciones. Luego, IBM crea el lenguaje SQL para administrar este tipo de base de datos. En sus inicios se iba a llamar SEQUEL (Structured English QUEry Language) pero por un problema de licencias con el nombre, se le quitaron las vocales y quedó como SQL (aunque se siguió pronunciando SEQUEL). Sin embargo, hay todo un dilema sobre la verdadera pronunciación, puedes leer más en nuestro blog: ¿Cuál es la forma correcta de pronunciar SQL?

SQL es un lenguaje que se divide en tres lenguajes con funciones específicas:

  • DDL (Data Definition Language): se encarga de definir la estructura de las tablas y las relaciones (diseñar la base de datos).
  • DML (Data Manipulation Language): se encarga de manipular la información, escribirla, actualizarla o eliminarla.
  • DCL (Data Control Language): se encarga de definir roles y permisos de acceso a la base de datos.

el-lenguaje-SQL-edteam.png

Si quieres conocer más de SQL y dominar este lenguaje, que es de los más demandados de la industria de la tecnología, es momento de tomar nuestro curso **Bases de datos SQL desde cero** y aprender a diseñar, crear y administrar la información de cualquier motor de base de datos relacional.

curso-bases-de-datos-SQL-desde-cero-edteam

Motores de bases de datos relacionales

Por base de datos nos referimos solamente a los datos, mientras que el software, que se utiliza para gestionarlos, almacenarlos y consultarlos, es el Sistema Gestor de base de datos. El componente principal de este software es el motor, por lo que es usual hablar de Gestor de bases de datos y Motor de bases de datos como sinónimos.

motores-de-bases-de-datos-relacionales-edteam.png

Existen varios motores de bases de datos relacionales. Los más conocidos son:

  1. Oracle (1977): La empresa se lanza en 1977 con el nombre de Relational Sofware y crea el primer motor SQL comercial de la historia. Su creador, Larry Ellison, estuvo en el comité que definió la SQL.
  2. Microsoft SQL Server (1989): Es la respuesta de Microsoft a Oracle y, aunque funcionó siempre en Windows, es multiplataforma desde 2017. Son líderes en Business Intelligence (integrando más apps en el mismo paquete).
  3. MySQL (1995): Es el motor más usado en la web (y preferido por los CMS clásicos que usan PHP), tiene una curva de aprendizaje sencilla, por lo que se hizo muy famoso. Desde la compra por Oracle, tiene una versión Open Source y una versión privada.
  4. PostgreSQL (1996): Inició como un proyecto universitario llamado INGRES, inspirado en Oracle. Cumple el estándar ACID (que no cumple totalmente MySQL). Usan funciones y triggers que MySQL duró años en implementar.
  5. SQLite (2000): La base de datos está embebida en el programa, no usa la arquitectura cliente - servidor sino que guarda los datos en la misma aplicación. Al estar integrado en todos los teléfonos, se usa para almacenamiento interno de apps.
  6. MariaDB (2009): Es el Fork derivado de MySQL con licencia GPL, fue creado a partir de la compra de Sun por Oracle. Compatible con MySQL para poder cambiar un servidor por otro directamente.

¿Quieres conocer con más detalles la historia de las bases de datos SQL? Tenemos un video en nuestro canal de Youtube: Historia completa de las base de datos SQL (o relacionales).

Bases de datos NoSQL (no relacionales)

bases-de-datos-nosql-edteam.png

Las bases de datos no relacionales (o NoSQL) no organizan sus datos en tablas, no se preocupan de la normalización ni de las llaves foráneas. ¡O sea que la integridad de la información está en riesgo! Los datos se pueden repetir, y la estructura de la información pasa a un segundo plano. La prioridad con las NoSQL es la velocidad.

¿Te acuerdas el ejemplo de los cursos y los profesores que hicimos al inicio de este blog? Las bases de datos NoSQL hacen exactamente lo que te dije que no había que hacer: juntan todos los datos en un solo lugar para acelerar las consultas.

no-mas-relaciones-edteam.png

Sus principales características son:

  1. Redundancia de datos: mientras en SQL, un dato no puede repetirse, en NoSQL se permite la redundancia para que las consultas sean más veloces.
  2. Velocidad sobre integridad: las bases de datos NoSQL prefieren sacrificar la integridad de los datos para ganar velocidad.
  3. No existe un lenguaje de consultas: no existe un lenguaje estandarizado como SQL, sino que cada motor tiene sus propias definiciones y métodos en su API.

Tipos de bases de datos NoSQL

Existen tres tipos de bases de datos NoSQL, según la forma en que organizan la información:

  1. Clave valor: organizan los datos en parejas, como en un diccionario (palabra: definición). La clave es el identificador mientras que el valor es la información que se almacena. Este tipo de bases de datos se usan en gestión de sesiones o carritos de compras, donde la clave es un identificador único del usuario y en el valor se almacenan los productos o los datos de sesión. Un ejemplo es Dynamo DB de Amazon.

    Cuál-base-de-datos-es-mejor.png

  2. Documentales: almacenan la información en archivos JSON, llamados documentos. Puesto que JSON es un estándar, son muy fáciles de administrar, y la organización de la información es muy flexible. El motor más conocido es **MongoDB,** y puedes aprenderlo en EDteam.

  3. De grafos: están basadas en la teoría matemática de grafos y organizan la información en nodos (vértices) que se relacionan entre sí (aristas). Cada nodo almacena información en formato clave valor mientras que las aristas representan las relaciones entre ellos. Se usan para sistemas de recomendación, conexiones entre amigos en redes sociales, anuncios o sistemas de rutas.

Motores de bases de datos NoSQL

Al igual que las bases de datos relacionales, existen muchos motores de bases de datos no relacionales. Los más conocidos son MongoDB, Redis, Cassandra y DynamoDB.

En la siguiente infografía puedes ver más información sobre los motores de bases de datos NoSQL:

MOTORES_DE_BASES_DE_DATOS_NoSQL-infografia-edteam.png

¿Cuándo usar SQL y cuando NoSQL?

Llegados a este punto debes tener claras las diferencias entre las bases de datos SQL y las NoSQL. Y si aún tienes dudas, con la siguiente infografía las vas a despejar todas:

bases-de-datos-relacionales-vs-no-relacionales.png

Como ves, las bases de datos SQL separan la información en tablas para asegurarse de la no redundancia y la integridad de los datos. Mientras que las NoSQL no usan tablas y pueden juntar toda la información en un solo lugar para tenerla disponible más rápido.

Pero, ¿Cuál es mejor? ¿Hay que dejar de usar SQL porque las NoSQL son más rápidas?

Ningún tipo de bases de datos es mejor que otra y su uso va a depender de lo que necesites. Es más, según el tamaño de tu aplicación, podrías utilizar bases de datos SQL en ciertas componentes y NoSQL en otros, sin tener problemas. Eso se llama Stack y hablamos mucho más sobre stacks de tecnología y programadores full stack en este video: ¿Qué es un programador Full Stack? ¿Existen o son un mito?

Las bases de datos SQL son excelentes en sistemas que requieran integridad de los datos. Por lo tanto, son usadas en entidades financieras, ecommerce, reservas de hoteles, vuelos, etc.

Las bases de datos NoSQL se usan en escenarios donde la velocidad es más importante que la integridad. Por ejemplo, sistemas de recomendaciones y publicidad, posts y comentarios en redes sociales, etc.

Quizás pienses que con NoSQL tu aplicación irá más rápida, pero salvo que sea muy grande y que los usuarios consulten y creen información muy rápido, no verás la diferencia en el rendimiento. Spoiler: mil usuarios no es muy grande.

Ahora que leíste este blog, ya tienes claro porque los profesionales en bases de datos son altamente requeridos en empresas de tecnología. Conviértete en uno de ellos gracias a todos los cursos de bases de datos que tenemos en EDteam. Recuerda que puedes comenzar gratis cualquiera de nuestros cursos para disfrutar de la experiencia EDteam.

Amplía esta información en nuestro video de Youtube.

Comentarios de los usuarios

Pregunta a ChatEDT