Come spiegare a tua nonna la differenza tra SQL e NoSQL

Come spiegare a tua nonna la differenza tra SQL e NoSQL

Una delle decisioni più importanti che uno sviluppatore deve prendere è quale database utilizzare. Per molti anni, le opzioni sono state limitate ai vari database relazionali che supportavano il linguaggio di query strutturato (SQL). Tra questi, MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 e molti altri.

Negli ultimi 15 anni, molti nuovi database sono entrati nel mercato nell'ambito dell'approccio No-SQL. Tra questi, archivi chiave-valore come Redis e Amazon DynamoDB, archivi a colonne estese come Cassandra e HBase, archivi di documenti come MongoDB e Couchbase, e database a grafo e motori di ricerca come Elasticsearch e Solr.

In questo articolo cercheremo di comprendere SQL e NoSQL senza addentrarci nelle loro funzionalità.
E poi ci divertiremo un po' lungo il cammino.

Spiegare SQL alla nonna

Nonna, immagina che non sono il tuo unico nipote. Mamma e papà si amavano come conigli, hanno avuto 100 figli e poi ne hanno adottati altri 50.

Quindi ci ami tutti e non vuoi dimenticare nessuno dei nostri nomi, compleanni, gusti di gelato preferiti, taglie di vestiti, hobby, nomi dei coniugi, nomi dei figli o qualsiasi altro fatto super importante. Ma diciamocelo. Hai 85 anni e la buona vecchia memoria non ce la fa proprio a tenere il passo.

Fortunatamente, essendo il più intelligente dei tuoi nipoti, posso aiutarti. Quindi vengo a casa tua, prendo dei fogli di carta e ti chiedo di preparare dei biscotti prima di iniziare.

Su un foglio di carta facciamo una lista chiamata "nipoti". Ogni nipote registrato con alcune informazioni essenziali su di esso, tra cui un numero univoco che ora indicherà cosa nipote lo è. Inoltre, per motivi di organizzazione, elenchiamo gli attributi denominati in cima all'elenco, in modo da sapere sempre quali informazioni contiene l'elenco.

id
Nome
compleanno
ultima visita
taglia di abbigliamento
gelato preferito
adottato

1
Jimmy
09-22-1992
09-01-2019
L
Cioccolato alla menta
falso

2
Jessica
07-21-1992
02-22-2018
M
strada rocciosa
vero

…la lista continua!

Elenco dei nipoti

Dopo un po', capisci tutto e abbiamo quasi finito la lista! Ma poi ti rivolgi a me e dici: "Abbiamo dimenticato di aggiungere lo spazio per coniugi, hobby, nipoti!". Ma no, non l'abbiamo fatto! Questo è il passo successivo e richiede un nuovo foglio di carta.

Allora tiro fuori un altro pezzo di carta e su di esso scriviamo una lista ConiugiAggiungiamo nuovamente gli attributi che sono importanti per noi all'inizio dell'elenco e iniziamo ad aggiungere righe.

id
id_nipote
Nome
compleanno

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…più coniugi!

Elenco dei coniugi

A questo punto spiego a mia nonna che se vuole sapere chi è sposato con chi, le basta fare un confronto id nella lista nipoti с id_nipote nell'elenco dei coniugi.

Dopo un paio di dozzine di biscotti, ho bisogno di un pisolino. "Puoi continuare, nonna?" Esco per fare un pisolino.

Torno tra qualche ora. Sei fantastica, nonna! Tutto sembra perfetto, tranne la lista. hobbyCi sono circa 1000 hobby nella lista. La maggior parte di essi sono ricorrenti. Cosa è successo?

id_nipote
hobby

1
bike

4
bike

3
bike

7
running

11
bike

…continuamo!

Scusa, ho completamente dimenticato di dirtelo! Utilizzando una lista, puoi tracciare solo hobby. Quindi in un altro elenco dobbiamo tenere traccia nipoti, chi sta facendo questo hobbyLo chiameremo "Elenco generale"Vedendo che non ti piace, inizio a preoccuparmi e torno alla modalità elenco.

id
hobby

1
bike

2
running

3
nuoto

…altri hobby!

Elenco degli hobby

Una volta che abbiamo la nostra lista di hobby, creiamo la nostra seconda lista e la chiamiamo "Hobby dei nipoti'.

id_nipote
hobby_id

4
1

3
1

7
2

…Di più!

Elenco generale degli hobby dei nipoti

Dopo tutto quel lavoro, la nonna ora ha un fantastico sistema di memorizzazione per tenere traccia della sua famiglia incredibilmente numerosa. E poi – per farmi aspettare ancora – mi fa la domanda magica: "Dove hai imparato a fare tutto questo?"

Database relazionali

Un database relazionale è un insieme di tabelle formalmente descritte (fogli nel nostro esempio) da cui è possibile accedere Secondo oppure raccoglierli in modi diversi senza dover riorganizzare le tabelle banca datiEsistono molti tipi diversi di database relazionali, ma sfortunatamente un elenco su un pezzo di carta non è uno di questi.

I database relazionali più diffusi utilizzano un linguaggio di interrogazione chiamato SQL (Structured Query Language). Grazie a questo, se la nonna trasferisce il suo sistema di memoria su un computer, può ottenere rapidamente risposte a domande come: "Chi non è venuto a trovarmi nell'ultimo anno, è sposato e non ha hobby?"

Uno dei sistemi di gestione di database SQL più diffusi è MySQL, un sistema open source. È implementato principalmente come sistema di gestione di database relazionali (RDBMS) per applicazioni software basate sul web.

Alcune caratteristiche principali di MySQL:

  • È piuttosto noto, ampiamente utilizzato e ampiamente testato.
  • Ci sono molti sviluppatori qualificati che hanno esperienza con SQL e database relazionali.
  • I dati vengono memorizzati in tabelle diverse, il che semplifica la creazione di relazioni mediante chiavi primarie ed esterne (identificatori).
  • È facile da usare ed efficace, il che lo rende ideale per aziende grandi e piccole.
  • Il codice sorgente è concesso in licenza secondo la GNU General Public License.

Ora dimenticatelo ALL.

Spiegare NoSQL alla nonna

Nonna, abbiamo una famiglia numerosa. Ci sono 150 nipoti! Molti di loro sono sposati, hanno figli, hanno hobby, ecc. Alla tua età, è impossibile ricordare tutto di tutti noi. Quello che ti serve è un sistema di memoria!

Per fortuna io, no Voglio che tu dimentichi il mio compleanno e il mio gusto di gelato preferito, e posso aiutarti. Quindi corro al negozio più vicino, prendo un quaderno e torno a casa tua.

Il primo passo che faccio è scrivere "Nipoti" a caratteri cubitali sulla copertina del quaderno. Poi giro la prima pagina e inizio a scrivere tutto ciò che dovreste ricordare di me. Dopo qualche minuto, la pagina appare più o meno così.

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

Я: "Sembra che tutto sia pronto!"
nonna: "Aspetta, e gli altri nipoti?"
Я: "Sì, esatto. Poi assegniamo una pagina a ciascuno."
nonna: "E dovrò scrivere le stesse informazioni per tutti, come ho fatto per te?"
Я: "No, solo se vuoi. Lascia che te lo mostri."
Prendo la penna dalle mani di mia nonna, giro pagina e scrivo velocemente alcune informazioni sul mio cugino meno preferito.

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

Ogni volta che la nonna ha bisogno di ricordare qualcosa su uno dei suoi nipoti, le basta andare alla pagina corrispondente nel quaderno dei nipoti. Tutte le informazioni su di loro saranno memorizzate proprio lì, sulla loro pagina, e lei potrà modificarle e aggiornarle rapidamente.

Una volta fatto tutto, pone la domanda magica: "Dove hai imparato a fare tutto questo?"

Database NoSQL

Ci sono molti database NoSQL ("non solo SQL"). Nei nostri esempi abbiamo mostrato banca dati dei documentiI database NoSQL modellano i dati in modi che eliminano le relazioni tra tabelle utilizzate nei database relazionali. Questi database sono diventati popolari all'inizio degli anni 2000 tra le aziende che necessitavano di clustering di database basati su cloud per via dei loro elevati requisiti di scalabilità (ad esempio Facebook). In tali applicazioni, la coerenza dei dati era molto meno importante di prestazioni e scalabilità.

Inizialmente, i database NoSQL venivano spesso utilizzati per attività di gestione dei dati di nicchia. In genere, quando si trattava di applicazioni web e cloud, i database NoSQL elaboravano e distribuivano quantità significative di dati. Gli ingegneri che lavoravano con NoSQL apprezzavano anche la flessibilità dello schema dei dati (o la sua mancanza), che consentiva rapide modifiche nelle applicazioni aggiornate.

Caratteristiche principali di NoSQL:

  • Un modo molto flessibile per archiviare i dati
  • Scalabilità orizzontale ai cluster
  • Possibile sequenza per persistenza/diffusione
  • Documenti identificati tramite chiavi univoche

Confronto dettagliato

MySQL richiede uno schema definito e strutturato.
NoSQL consente di memorizzare qualsiasi dato in un "documento".

MySQL è supportato da una vasta comunità.
NoSQL ha una comunità piccola e in rapida crescita.

NoSQL è facile da scalare.
MySQL necessita di maggiore gestibilità.

MySQL utilizza SQL, utilizzato in molti tipi di database.
NoSQL è un database basato sulla progettazione con implementazioni diffuse.

MySQL utilizza il linguaggio di query standard (SQL).
NoSQL non utilizza un linguaggio di query standard.

MySQL dispone di molti ottimi strumenti di reporting.
NoSQL dispone di diversi strumenti di reporting difficili da standardizzare.

MySQL potrebbe presentare problemi di prestazioni con dati di grandi dimensioni.
NoSQL garantisce prestazioni eccellenti sui big data.

I pensieri di 8base

La società 8 base, dove lavoro, supportiamo l'area di lavoro di ogni progetto con un database relazionale Aurora MySQL ospitato su AWS. Sebbene NoSQL sia una scelta logica quando i requisiti applicativi richiedono elevate prestazioni e scalabilità, crediamo che la solida coerenza dei dati fornita da un DBMS sia essenziale quando si sviluppano applicazioni SaaS e altri software aziendali.

Per le startup e gli sviluppatori che creano applicazioni aziendali che richiedono reporting, integrità delle transazioni e modelli di dati ben definiti, investire in database relazionali è, a nostro avviso, la scelta giusta.

Scopri di più sullo sviluppo con Aurora, Serverless e GraphQL su 8base.com qui.

Fonte: habr.com

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster