
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.
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.
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
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.
Lista de pasatiempos
Tan pronto como tenemos nuestra lista de pasatiempos, creamos nuestra segunda lista y la llamamos "
Hobbies of Grandchildren ".
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í .