To SQL or NOSQL

johnnietirado
3/24/2021

En un momento de nuestra carrera de programacíón vamos a tener que aprender sobre las bases de datos y como estas representan información. Tal vez no sea nuestro rol principal, pero entender como ser organiza la información y la conexión entre ella nos lleva a crear mejor código y solucionar maneras de la forma correcta.

Hay dos maneras populares de guardar información.

En tablas o en documentos .

Tablas y SQL

Cuando hablamos de tablas (Tables) nos referimos a data estructurada. Esto implica que se determina que información va en la tabla antes de añadir información a ella.

Esta información se llama Schema y le comunica al programador que información, nombre y tipo, puede ir en la tabla. Sin excepción, si intentas agregar algo que no esta en el Schema a la tabla, la base de datos te lo va a decir.

La manera que nos comunicamos con este tipo de base de datos es utilizando SQL. Este lenguaje nos permite crear los Schemas de las tablas, agregar, borrar, actualizar y hacer modificaciones a las tablas mismas.

Veamos un ejemplo de como creamos una tabla de Usuarios usando SQL.

CREATE TABLE Usuario (
    id int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

Schemaless y los documentos

El otro lado de la moneda son las base de datos que son Schemaless.

Traducido en español: sin schema.

Las base de datos schemaless (Dos muy populares son MongoDB y Firebase) guardan su información en colecciones de documentos. Estos documentos pueden tener cualquier formato que querramos.

Piensa en un documento de Word. Lo único consistente entre un documento de Word y otro es que es un Documento Word, pero la información dentro de el puede ser completamente diferente.

Esto nos permite tener mucha flexibilidad al momento de crear nuestra solución.

Estos documentos son representados en formato de JSON

Esto nos permite guardar listas y otros documentos dentro de un mismo documento, otra vez, demostrando que es un sistema extremadamente flexible.

Veamos ahora como podemos crear una nueva collección y agregar un documento.

En este caso asumimos que estamos usando MongoDB como nuestra base de datos.

db.collection('usuarios').insert({
	nombre: "johnnie",
	apellido: "tirado",
	edad: 26
});

Cual usar?

La respuesta a esta pregunta es: Depende. Como muchos aspectos de la programación la herramienta que decidimos usar va a ser basada en el problema que intentamos solucionar. Empresas gigantes como Twitter y Facebook crearon su infraestructura inicial usando SQL. Otras empresas como Uber han expresado su amor por las base de datos Schemaless.

Recuerda que se pueden combinar las dos si el problema lo amerita.

Pero hablemos de ejemplos concretos y como lo haría yo.

RECUERDA: Estas son recomendaciones personales, van a haber personas que prefieren otra tecnología que las que yo recomiendo y eso esta bien. Es más si estas en descuerdo te invito a dejar un comentario.

  • Blog (SQL): Un blog es un sistema simple donde sabemos de antemano las tablas que debemos de crear. Autores, Articulos y Commentarios, son las bases de un buen blog. La conexión de cada una de las tablas es clara.
  • Chat App (SQL o NoSQL): Confundido? No te preocupes, la verdad es que va a depender de como quieres manejar las funciones de tu app de chat. Si estas haciendo cuartos de 1 a 1 SQL te permite tener un sistema robusto que muestra los mensajes por cuarto donde dos usuarios se estan intentando conectar. Pero si quieres algo al estilo Clubhouse donde puedes tener m a n una estructura un poco más flexible te va a permitir tener toda la información bajo una collección (NoSQL) y no varias tablas (SQL).
  • Restaurante (NoSQL): La razón es simple. Un plato puede tener varias variaciones y estas se pueden guardar directamente dentro del plato en la base de datos sin tener que hacer referencia a otras tablas. Es decir, podemos tener una hamburguesa que tiene todas las opciones que se le puede agregar dentro de un documento (NoSQL) y no dentro de una nueva tabla llamada opciones_de_hamburguesa (SQL). Esto permite enviar todas la información necesaria al cliente sin tener que pedir más información.

Espero que esos ejemplos te hayan ayudado a pensar un poco en como el tipo de problema que tenemos que resolver afecta el tipo de herramienta que usamos.

Cual uso yo

Siendo totalmente transparente, me encanta usar NoSQL. Es más, esta página guarda todo su contenido en MongoDB.

Sin embargo, soy un programador y como he repetido varias veces en este post, debemos elegir la herramienta correcta para el problema que se nos presenta. Aprender las ventajas y desventajas de cada uno nos permite tomar una decisión informada y que nos puede llevar al éxito.

Recursos

Aquí te dejo una lista de recursos para cada tipo de base de datos. Estos me ayudan a mi a continuar aprendiendo estas tecnologias y los uso como referencia constantemente.

SQL

NoSQL (MongoDB)

Antes que te vayas

Si te gusta este tipo de contenido y quieres obtener tips de programación, emprendimiento y tecnología directamente a tu email subscribete al Newsletter de Codealo. Vamos a más detalle sobre las tecnologías y exploramos sus usos en el mundo real.


Hecho con 🧡 por
@Tomás Ferreira y @Johnnie Tirado
© 2021 Codealo