Com explicar la diferència entre SQL i NoSQL a la vostra àvia

Com explicar la diferència entre SQL i NoSQL a la vostra àvia

Una de les decisions més importants que pren un desenvolupador és quina base de dades utilitzarà. Durant molts anys, les opcions es van limitar a diverses opcions de bases de dades relacionals que admetien el llenguatge de consulta estructurat (SQL). Aquests inclouen MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 i molts altres.

Durant els darrers 15 anys, han aparegut moltes bases de dades No-SQL noves al mercat. Aquests inclouen botigues de valors clau com Redis i Amazon DynamoDB, bases de dades de columna àmplies com Cassandra i HBase, magatzems de documents com MongoDB i Couchbase, i bases de dades de gràfics i motors de cerca com Elasticsearch i Solr.

En aquest article intentarem entendre SQL i NoSQL sense entrar en la seva funcionalitat.
A més, ens divertirem una mica en el procés.

Explicant SQL a l'àvia

Àvia, imagina que no sóc el teu únic nét. En canvi, la mare i el pare s'estimaven com conills, van tenir 100 fills i després en van adoptar 50 més.

Per tant, ens estimes a tots i no vols oblidar cap dels nostres noms, aniversaris, sabors de gelats preferits, talles de roba, aficions, noms de cònjuges, noms de descendència i altres fets molt importants. Tanmateix, siguem sincers. Tens 85 anys i la bona memòria no t'hi pot fer front.

Per sort, sent el més intel·ligent dels teus néts, puc ajudar. Així que vinc a casa teva, trec uns quants fulls de paper i et demano que enfornis unes galetes abans de començar.

En un full de paper fem una llista anomenada “Nets" Cada nét gravat amb alguna informació essencial al respecte, inclòs un número únic que ara indicarà quin nét ell és. A més, per motius d'organització, escrivim els atributs nomenats a la part superior de la llista de manera que sempre sabem quina informació conté la llista.

id
nom
Aniversaris
última visita
mida de roba
el gelat preferit
adoptat

1
Palanqueta
09-22-1992
09-01-2019
L
Xocolata amb menta
false

2
Jessica
07-21-1992
02-22-2018
M
carretera pedregosa
veritable

...continua la llista!

Llistat de néts

Al cap d'una estona ja ho entens tot i ja gairebé hem acabat amb la llista! Tanmateix, et dirigeixes a mi i dius: "Ens hem oblidat d'afegir espai per a cònjuges, aficions, néts!" Però no, no ho hem oblidat! Això segueix més enllà i requereix un nou full de paper.

Així que trec un altre tros de paper i sobre ell anomenem la llista Cònjuges. Tornem a afegir els atributs que són importants per a nosaltres al començament de la llista i comencem a afegir files.

id
id_nét
nom
Aniversaris

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

... més cònjuges!

Llista de cònjuges

En aquesta etapa, li explico a la meva àvia que si vol saber qui està casat amb qui, llavors només necessita comparar id a la llista néts с id_nét a la llista de cònjuges.

Després d'un parell de dotzenes de galetes, necessito una migdiada. "Pots continuar, àvia?" Me'n vaig a fer una migdiada.

Tornaré d'aquí a unes hores. Estàs genial, àvia! Tot es veu genial excepte la llista afició. Hi ha unes 1000 aficions a la llista. La majoria són repetitius; Què ha passat?

id_nét
hobby

1
anar en bicicleta

4
anar en bicicleta

3
anar en bicicleta

7
funcionament

11
anar en bicicleta

...continuem!

Ho sento, m'havia oblidat completament! Si feu servir una llista, només podeu fer un seguiment afició. Aleshores, en una altra llista hem de fer un seguiment nétsqui estan fent això afició. Anem a cridar-lo "Llista comuna". En veure que no t'agrada, començo a preocupar-me i torno al mode llista.

id
hobby

1
anar en bicicleta

2
funcionament

3
natació

...més aficions!

Llista d'aficions

Un cop tenim la nostra llista d'aficions, creem la nostra segona llista i l'anomenem "Aficions dels néts».

id_nét
hobby_id

4
1

3
1

7
2

… més!

Llista general d'aficions dels néts

Després de tot aquest treball, l'àvia ara té un sistema de memòria fantàstic per fer un seguiment de la seva increïblement nombrosa família. I després, per mantenir-me més temps, em fa la pregunta màgica: "On vas aprendre a fer tot això?"

Bases de dades relacionals

Una base de dades relacional és un conjunt de taules descrites formalment (en el nostre exemple són fulls) des de les quals podeu accedir donat o recollir-los de diferents maneres sense haver de reorganitzar les taules Base de dades. Hi ha molts tipus diferents de bases de dades relacionals, però malauradament una llista en un full de paper no és una d'elles.

Una característica distintiva de les bases de dades relacionals més populars és el llenguatge de consulta SQL (Structured Query Language). Gràcies a això, si l'àvia transferia el seu sistema de memòria a l'ordinador, ràpidament podria obtenir una resposta a preguntes com ara: "Qui no em va visitar l'any passat, està casat i no té cap afició?"

Un dels sistemes de gestió de bases de dades SQL més populars és MySQL de codi obert. S'implementa principalment com a sistema de gestió de bases de dades relacionals (RDBMS) per a aplicacions de programari basades en web.

Algunes característiques clau de MySQL:

  • És força conegut, molt utilitzat i provat a fons.
  • Hi ha molts desenvolupadors qualificats que tenen experiència treballant amb SQL i bases de dades relacionals.
  • Les dades s'emmagatzemen en diverses taules, cosa que facilita l'establiment de relacions mitjançant claus primàries i forasteres (identificadors).
  • És fàcil d'utilitzar i eficaç, per la qual cosa és ideal per a empreses grans i petites.
  • El codi font es troba sota els termes de la Llicència Pública General de GNU.

Ara oblida't TOTS.

Explicant NoSQL a l'àvia

Àvia, tenim una gran família. Hi ha 150 néts! Molts d'ells estan casats, tenen fills, estan interessats en alguna cosa, etc. A la teva edat és impossible recordar-ho tot de tots nosaltres. El que necessites és un sistema de memorització!

Afortunadament, jo no Vull que oblidis el meu aniversari i el meu sabor preferit del gelat, puc ajudar-te. Així que corro a la botiga més propera, agafo una llibreta i torno a casa teva.

El primer pas que faig és escriure "Nésts" amb lletres grans i negretes a la portada del meu quadern. Aleshores vaig a la primera pàgina i començo a escriure tot el que necessiteu recordar de mi. Al cap d'uns minuts la pàgina sembla una cosa així.

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

Я: "Sembla que tot està preparat!"
Àvia: "Espera, què passa amb els altres néts?"
Я: "Si exactament. Llavors assignem una pàgina per a cadascun".
Àvia: "Hauré d'escriure la mateixa informació per a tothom com ho vaig fer per a tu?"
Я: “No, només si vols. Deixa'm mostrar".
Agafo el bolígraf de la meva àvia, passo pàgina i escric ràpidament informació sobre el meu cosí menys preferit.

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

Sempre que l'àvia necessita recordar alguna cosa sobre un dels seus néts, només ha d'anar a la pàgina correcta del quadern dels seus néts. Tota la informació sobre ells s'emmagatzemarà allà mateix a la seva pàgina, que pot canviar i actualitzar ràpidament.

Quan tot està fet, fa la pregunta màgica: "On vas aprendre a fer tot això?"

Bases de dades NoSQL

Hi ha molts Bases de dades NoSQL ("no només SQL"). En els nostres exemples vam mostrar base de dades de documents. Les bases de dades NoSQL modelen les dades de manera que eliminen les relacions de taules utilitzades a les bases de dades relacionals. Aquestes bases de dades es van fer populars a principis de la dècada del 2000 entre les empreses que necessitaven agrupacions de bases de dades basades en núvol a causa dels seus requisits d'escala (per exemple, Facebook). En aquestes aplicacions, la coherència de les dades era molt menys important que el rendiment i l'escalabilitat.

Al principi, les bases de dades NoSQL s'utilitzaven sovint per a tasques de gestió de dades de nínxol. Bàsicament, quan es tractava d'aplicacions web i en núvol, les bases de dades NoSQL processaven i distribuïen quantitats importants de dades. Als enginyers de NoSQL també els va agradar la flexibilitat de l'esquema de dades (o la manca d'aquesta) de manera que fossin possibles canvis ràpids en aplicacions actualitzables.

Característiques principals de NoSQL:

  • Una manera molt flexible d'emmagatzemar dades
  • Escalat horitzontal a clústers
  • Possible seqüència de persistència/propagació
  • Documents que s'identifiquen mitjançant claus úniques

Comparació detallada

MySQL requereix un esquema definit i estructurat.
NoSQL us permet emmagatzemar qualsevol dada en un "document".

MySQL és compatible amb una comunitat enorme.
NoSQL té una comunitat petita i en ràpid creixement.

NoSQL és fàcil d'escalar.
MySQL necessita més maneig.

MySQL utilitza SQL, que s'utilitza en molts tipus de bases de dades.
NoSQL és una base de dades dissenyada amb implementacions populars.

MySQL utilitza un llenguatge de consulta estàndard (SQL).
NoSQL no utilitza un llenguatge de consulta estàndard.

MySQL té moltes eines d'informes fantàstiques.
NoSQL té diverses eines d'informes que són difícils d'estandarditzar.

MySQL pot tenir problemes de rendiment per a dades grans.
NoSQL ofereix un rendiment excel·lent en grans dades.

Pensaments 8base

La companyia 8 base, on treballo, alimentem l'espai de treball de cada projecte amb una base de dades relacional Aurora MySQL allotjada a AWS. Tot i que NoSQL és una opció lògica quan els requisits de les vostres aplicacions requereixen un alt rendiment i escalabilitat, creiem que la gran coherència de dades proporcionada per un DBMS és essencial a l'hora de crear aplicacions SaaS i altres programaris empresarials.

Per a startups i desenvolupadors que creen aplicacions empresarials que requereixen informes, integritat de transaccions i models de dades ben definits, invertir en bases de dades relacionals és, al nostre parer, l'opció correcta.

Obteniu més informació sobre el desenvolupament amb Aurora, Serverless i GraphQL amb 8base.com aquí.

Font: www.habr.com

Afegeix comentari