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

imagen

Una de las decisiones más importantes que toma un desarrollador es qué base de datos usar. Con los años, las opciones se han limitado a varias opciones de bases de datos relacionales que admiten el lenguaje de consulta estructurado (SQL). Estos incluyen MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 y muchos otros.

En los últimos 15 años, muchas bases de datos nuevas han aparecido en el mercado como parte del enfoque No-SQL. Estos incluyen almacenes de valores clave, como Redis y Amazon DynamoDB, bases de datos de columnas anchas, como Cassandra y HBase, almacenes de documentos, como MongoDB y Couchbase, así como 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 en el proceso.

Explicar Granny SQL


Abuela, imagina que no soy tu único nieto. En cambio, mamá y papá se amaban como conejos, tuvieron 100 hijos y luego adoptaron otros 50.

Entonces, nos ama a todos y no quiere olvidar ninguno de nuestros nombres, cumpleaños, gustos de nuestros helados favoritos, tallas de ropa, pasatiempos, nombres de cónyuges, nombres de descendientes y otros hechos súper importantes. Pero seamos sinceros. Tienes 85 años, y la buena memoria simplemente no puede hacer frente.

Afortunadamente, yo, siendo el más inteligente de tus nietos, puedo ayudarte. Así que voy a tu casa, saco unas cuantas hojas de papel y te pido que hornees galletas antes de comenzar.

En una hoja de papel hacemos una lista llamada " Nietos ". Cada nieto se registra con información esencial sobre él, incluido un número único, que ahora indicará qué tipo de nieto es. Además, por el bien de la organización, escribimos atributos con nombre en la parte superior de la lista para que siempre sepamos qué información contiene esta lista.
idnombrecumpleañosultima visitatalla de ropahelado favoritoadoptado
1Jimmy22/09-199201-01-2019LChocolate mentafalso
2Jessica21/07-199222/02/2018MCamino rocosocierto
... continua la lista!
Lista de nietos

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

Así que saco otro papel, y en él llamamos a la lista de Cónyuges . Nuevamente agregamos los atributos que son importantes para nosotros en la parte superior de la lista y comenzamos a agregar las líneas.
idnieto_idnombrecumpleaños
12Juan01-01-1988
29 9Fernanda05-05-1985
... más esposas!
Lista de esposos

En esta etapa, le explico a mi abuela que si quiere saber quién está casado con quién, solo necesita hacer coincidir la identificación en la lista de nietos con grandchild_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. ¡Y eres genial, abuelita! Todo se ve genial, excepto la lista de pasatiempos . Hay alrededor de 1000 pasatiempos en la lista. La mayoría de ellos se repiten; que paso
nieto_idhobby
1andar en bicicleta
4 4andar en bicicleta
3andar en bicicleta
7 7corriendo
11andar en bicicleta
... continua!

Lo siento, me olvidé por completo de decir! Usando una sola lista, puedes seguir solo pasatiempos . Luego, en otra lista, necesitamos rastrear a los nietos que participan en este pasatiempo . Lo llamaremos la "Lista general" . Al ver que no te gusta, empiezo a preocuparme y vuelvo al modo de lista.
idhobby
1andar en bicicleta
2corriendo
3nadar
... más hobby!
Lista de pasatiempos

Tan pronto como tenemos nuestra lista de pasatiempos, creamos nuestra segunda lista y la llamamos " Hobbies of Grandchildren ".
nieto_idhobby_id
4 41
31
7 72
... más!
Lista general de pasatiempos de nietos

Después de todo este trabajo, mi abuela ahora tiene un sistema de memorización genial para rastrear a toda su familia sorprendentemente grande. Y luego, para detenerme por más tiempo, ella 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, estas son hojas) desde las cuales puede acceder a los datos o recopilarlos de varias maneras sin tener que reorganizar las tablas de la base de datos . Hay muchos tipos diferentes de bases de datos relacionales, pero desafortunadamente la lista en una hoja de papel no es una de ellas.

Una característica distintiva de las bases de datos relacionales más populares es el lenguaje de consulta SQL (lenguaje de consulta estructurado). Gracias a él, si mi abuela transfiere su sistema de memorización a una computadora, podrá obtener rápidamente 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 la web.

Algunas características clave de MySQL:

  • Es bastante famoso, ampliamente utilizado y probado exhaustivamente.
  • Hay muchos desarrolladores calificados con experiencia trabajando con SQL y bases de datos relacionales.
  • Los datos se almacenan en varias tablas, lo que facilita la comunicación mediante claves primarias y externas (identificadores).
  • Es fácil de usar y eficiente, por lo que es ideal para grandes y pequeñas empresas.
  • El código fuente está sujeto a la Licencia Pública General de GNU.

Ahora olvida TODOS .

Explicar a la abuela NoSQL


Abuela, tenemos una gran familia. Ella tiene 150 nietos! Muchos de ellos están casados, tienen hijos, les gusta algo, etc. A su edad, es imposible recordar todo acerca de todos nosotros. ¡Lo que necesitas es un sistema de memorización!

Afortunadamente, no quiero que olvides mi cumpleaños y mi sabor favorito de helado, puedo ayudarte. Por lo tanto, corro a la tienda más cercana, tomo un cuaderno y regreso a su casa.

El primer paso que tomo es escribir "Nietos" en letras grandes en negrita en la portada de un cuaderno. Luego paso a la primera página y empiezo a escribir todo lo que debes recordar sobre mí. Después de unos minutos, la página se ve así.

{ "_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!" } 

Yo : "¡Todo parece listo!"
Abuela : "Espera, ¿qué pasa con los otros nietos?"
Yo : "Sí, exactamente. Luego seleccione una página para cada uno ".
Abuela : "¿Y tendré que registrar la misma información para todos, como lo hice para usted?"
Yo : “No, solo si quieres. Déjame mostrarte.
Después de haberle quitado el bolígrafo a mi abuela, le doy la vuelta a la página y rápidamente escribo información sobre mi primo menos querido.

 { "_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" } 

Cada vez que una abuela necesita recordar algo sobre uno de sus nietos, solo necesita ir 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 puede cambiar y actualizar rápidamente.

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

Bases de datos NoSQL


Hay muchas bases de datos NoSQL ("no solo SQL"). En nuestros ejemplos, mostramos una base de datos de documentos . Las bases de datos NoSQL modelan los datos de manera que excluyen las relaciones tabulares 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 una agrupación de bases de datos basada en la nube debido a sus requisitos de escalabilidad explícitos (por ejemplo, Facebook). En tales aplicaciones, la consistencia de los datos era mucho menos importante que el rendimiento y la escalabilidad.

Al principio, las bases de datos NoSQL a menudo se usaban para tareas de gestión de datos de nicho. Básicamente, cuando se trataba de aplicaciones web y en la nube, las bases de datos NoSQL procesaron y distribuyeron cantidades significativas de datos. A los ingenieros que trabajan con NoSQL también les gustó el esquema de datos flexible (o su ausencia total), por lo que fueron posibles cambios rápidos en las aplicaciones actualizadas.

Características clave de NoSQL:

  • Manera muy flexible de almacenar datos.
  • Escalar a clústeres
  • Posible coherencia / secuencia de distribución
  • Documentos que se identifican usando claves únicas

Comparación detallada


MySQL requiere un marco específico y estructurado.
NoSQL le permite guardar cualquier dato en un "documento".

MySQL es compatible con una gran comunidad.
NoSQL tiene una comunidad pequeña y de 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 una base de datos basada en diseño con implementaciones populares.

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

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

MySQL puede emitir problemas de rendimiento para big data.
NoSQL proporciona un gran rendimiento en big data.

Pensamientos 8base


En 8base , donde trabajo, proporcionamos el espacio de trabajo de cada proyecto con la base de datos relacional Aurora MySQL alojada en AWS. Aunque NoSQL es una opción lógica cuando los requisitos de su aplicación requieren un alto rendimiento y escalabilidad, creemos que la consistencia de datos estricta proporcionada por el DBMS es necesaria al crear aplicaciones SaaS y otro software empresarial.

Para las nuevas empresas y los desarrolladores que crean aplicaciones comerciales que necesitan informes, integridad de transacciones y modelos de datos bien definidos, invertir en bases de datos relacionales es, en nuestra opinión, la opción correcta.

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

Source: https://habr.com/ru/post/467283/


All Articles