Cómo explicarle a tu abuela la diferencia entre SQL y NoSQL

Cómo explicarle a tu abuela la diferencia entre SQL y NoSQL

Una de las decisiones más importantes que toma un desarrollador es qué base de datos utilizar. Durante muchos años, las opciones se limitaron a las diversas opciones de bases de datos relacionales que admitían el lenguaje de consulta estructurado (SQL). Estos incluyen MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 y muchos más.

En los últimos 15 años, muchas bases de datos nuevas han ingresado al mercado bajo el enfoque No-SQL. Estos incluyen almacenes de valores clave como Redis y Amazon DynamoDB, bases de datos de columnas amplias como Cassandra y HBase, almacenes de documentos como MongoDB y Couchbase, y bases de datos de gráficos y motores de búsqueda como Elasticsearch y Solr.

En este artículo, intentaremos comprender SQL y NoSQL sin entrar en su funcionalidad.
Además, nos divertiremos un poco en el camino.

Explicando SQL a la abuela

Abuela, imagina que no soy tu único nieto. En cambio, mamá y papá se querían como conejos, tuvieron 100 hijos y luego adoptaron 50 más.

Entonces, nos amas a todos y no quieres olvidar ninguno de nuestros nombres, cumpleaños, sabores de helado favoritos, tallas de ropa, pasatiempos, nombres de cónyuges, nombres de descendientes y otros datos súper importantes. Sin embargo, seamos realistas. Tienes 85 años y tu buena memoria no puede soportarlo.

Por suerte, siendo el más inteligente de tus nietos, puedo ayudarte. Así que llego a tu casa, saco unas hojas de papel y te pido que hornees unas galletas antes de empezar.

En una hoja de papel hacemos una lista llamada "Nietos". Cada nieto grabado con información importante sobre él, incluido un número único que ahora indicará cómo nieto él es. Además, por motivos de organización, escribimos los atributos con nombre en la parte superior de la lista para saber siempre qué información contiene la lista.

id
nombre
cumpleaños
última visita
Talla de ropa
helado favorito
adoptado

1
Jimmy
09-22-1992
09-01-2019
L
Chocolate con menta
false

2
Jessica
07-21-1992
02-22-2018
M
camino rocoso
verdadero

…¡seguimos la lista!

lista de nietos

Después de un tiempo, entiendes todo y ¡casi terminamos con la lista! Sin embargo, te vuelves hacia mí y me dices: "¡Olvidamos agregar espacio para cónyuges, pasatiempos y nietos!" Pero no, ¡no lo hemos olvidado! Esto sigue más allá y requiere una nueva hoja de papel.

Entonces saco otra hoja de papel y en ella llamamos a la lista Los esposos. Nuevamente agregamos los atributos que son importantes para nosotros al principio de la lista y comenzamos a agregar en filas.

id
nieto_id
nombre
cumpleaños

1
2
Juan
06-01-1988

2
9
Fernanda
03-05-1985

…¡más cónyuges!

Lista de cónyuges

En este punto, le explico a mi abuela que si quiere saber quién está casado con quién, entonces sólo necesita emparejar id en la lista nietos с nieto_id en la lista de cónyuges.

Después de un par de docenas de galletas, necesito tomar una siesta. "¿Puedes continuar, abuela?" Me voy a tomar una siesta.

Regresaré en unas horas. ¡Eres genial, abuela! Todo se ve genial excepto la lista. pasatiempos. Hay alrededor de 1000 pasatiempos en la lista. La mayoría de ellos son repetitivos; ¿Qué ha pasado?

nieto_id
hobby

1
andar en bicicleta

4
andar en bicicleta

3
andar en bicicleta

7
correr

11
andar en bicicleta

…¡continuamos!

Lo siento, ¡me olvidé por completo de decirlo! Usando una lista, solo puedes rastrear pasatiempos. Luego en otra lista necesitamos rastrear nietos¿quiénes están haciendo esto? pasatiempos. vamos a llamarlo "Lista común". Al ver que no te gusta, me preocupo y vuelvo al modo lista.

id
hobby

1
andar en bicicleta

2
correr

3
nadar

…¡más pasatiempos!

Lista de pasatiempos

Una vez que tenemos nuestra lista de pasatiempos, creamos nuestra segunda lista y la llamamos "pasatiempos de los nietos".

nieto_id
id_hobby

4
1

3
1

7
2

…¡más!

Lista general de pasatiempos de los nietos.

Después de todo este trabajo, la abuela ahora tiene un fantástico sistema de memoria para realizar un seguimiento de toda su increíblemente numerosa familia. Y luego, para entretenerme más, me hace la pregunta mágica: "¿Dónde aprendiste a hacer todo esto?"

Bases de datos relacionales

Una base de datos relacional es un conjunto de tablas descritas formalmente (en nuestro ejemplo, son hojas) desde las que puede acceder Según o recogerlos de varias formas sin tener que reorganizar las tablas Base de datos. Hay muchos tipos diferentes de bases de datos relacionales, pero desafortunadamente una lista en una hoja de papel no es uno de ellos.

El sello distintivo de las bases de datos relacionales más populares es el lenguaje de consulta SQL (lenguaje de consulta estructurado). Gracias a él, si la abuela transfiere su sistema de memoria a una computadora, rápidamente puede obtener respuestas a preguntas como: "¿Quién no me visitó el año pasado, está casado y no tiene pasatiempos?"

Uno de los sistemas de gestión de bases de datos SQL más populares es MySQL de código abierto. Se implementa principalmente como un sistema de gestión de bases de datos relacionales (RDBMS) para aplicaciones de software basadas en web.

Algunas características clave de MySQL:

  • Es bastante conocido, ampliamente utilizado y ampliamente probado.
  • Hay muchos desarrolladores capacitados que tienen experiencia con SQL y bases de datos relacionales.
  • Los datos se almacenan en varias tablas, lo que facilita el establecimiento de relaciones mediante claves primarias y externas (identificadores).
  • Es fácil de usar y eficiente, lo que lo hace ideal para empresas grandes y pequeñas.
  • El código fuente está bajo los términos de la Licencia Pública General GNU.

Ahora olvídate Todo.

Explicando NoSQL a la abuela

Abuela, tenemos una familia enorme. ¡Tiene 150 nietos! Muchos de ellos están casados, tienen hijos, les gusta algo, etc. A tu edad, es imposible recordar todo sobre todos nosotros. ¡Lo que necesitas es un sistema de memoria!

Afortunadamente, yo no Queriendo que olvides mi cumpleaños y mi sabor de helado favorito, puedo ayudarte. Así que corro a la tienda más cercana, tomo una libreta y vuelvo a tu casa.

El primer paso que doy es escribir "Nietos" en letras grandes y negritas en la portada de mi cuaderno. Luego paso a la primera página y empiezo a escribir todo lo que necesitas recordar sobre mí. Unos minutos más tarde, la página se parece a esta.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: “¡Parece que todo está listo!”
Abuela: “Espera, ¿qué pasa con el resto de los nietos?”
Я: "Sí exactamente. Luego asigne una página para cada uno”.
Abuela: “¿Tendré que escribir la misma información para todos, como lo hice para ti?”
Я: “No, sólo si quieres. Dejame mostrar."
Tomando el bolígrafo de mi abuela, paso la página y rápidamente anoto información sobre mi prima que menos me gusta.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Siempre que una abuela necesita recordar algo sobre uno de sus nietos, sólo necesita navegar a la página correcta en el cuaderno de sus nietos. Toda la información sobre ellos se almacenará allí mismo, en su página, que ella podrá cambiar y actualizar rápidamente.

Cuando todo está hecho, hace la pregunta mágica: "¿Dónde aprendiste a hacer todo esto?"

Bases de datos NoSQL

Hay muchos Bases de datos NoSQL (“no sólo SQL”). En nuestros ejemplos, hemos mostrado base de datos de documentos. Las bases de datos NoSQL modelan datos de manera que excluyen las relaciones de tablas utilizadas en las bases de datos relacionales. Estas bases de datos se hicieron populares a principios de la década de 2000 entre las empresas que necesitaban agrupaciones de bases de datos basadas en la nube debido a sus requisitos explícitos de escala (como Facebook). En este tipo de aplicaciones, la coherencia de los datos era mucho menos importante que el rendimiento y la escalabilidad.

Al principio, las bases de datos NoSQL se utilizaban a menudo para tareas específicas de gestión de datos. Básicamente, cuando se trataba de aplicaciones web y en la nube, las bases de datos NoSQL procesaban y distribuían cantidades significativas de datos. A los ingenieros de NoSQL también les gustó el esquema de datos flexible (o la falta de él) para que fuera posible realizar cambios rápidos en las aplicaciones que se actualizaban.

Características clave de NoSQL:

  • Manera muy flexible de almacenar datos.
  • Escalado horizontal a clusters
  • Posible secuenciación por persistencia/difusión
  • Documentos que se identifican mediante claves únicas.

Comparación detallada

MySQL requiere un esquema definido y estructurado.
NoSQL le permite almacenar cualquier dato en un "documento".

MySQL tiene una gran comunidad.
NoSQL tiene una comunidad pequeña y en rápido crecimiento.

NoSQL es fácil de escalar.
MySQL necesita más manejabilidad.

MySQL usa SQL, que se usa en muchos tipos de bases de datos.
NoSQL es un diseño basado en bases de datos con implementaciones populares.

MySQL utiliza un lenguaje de consulta estándar (SQL).
NoSQL no utiliza un lenguaje de consulta estándar.

MySQL tiene muchas herramientas excelentes para generar informes.
NoSQL tiene varias herramientas de informes que son difíciles de estandarizar.

MySQL puede mostrar problemas de rendimiento para big data.
NoSQL proporciona un rendimiento excelente en big data.

Pensamientos 8base

La compañía 8basedonde trabajo, proporcionamos un espacio de trabajo para cada proyecto con una base de datos relacional Aurora MySQL alojada en AWS. Si bien NoSQL es una opción lógica cuando su aplicación exige alto rendimiento y escalabilidad, creemos que la sólida coherencia de los datos que proporciona un DBMS es esencial al crear aplicaciones SaaS y otro software empresarial.

Para las empresas emergentes y los desarrolladores que crean aplicaciones comerciales que requieren informes, integridad transaccional y modelos de datos bien definidos, invertir en bases de datos relacionales es, en nuestra opinión, la elección correcta.

Obtenga más información sobre el desarrollo con Aurora, Serverless y GraphQL en 8base.com aquí.

Fuente: habr.com

Añadir un comentario