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 prende è quale database utilizzare. Per molti anni, le opzioni sono state limitate alle varie opzioni del database relazionale che supportavano lo Structured Query Language (SQL). Questi includono MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 e molti altri.

Negli ultimi 15 anni, molti nuovi database sono entrati nel mercato con l'approccio No-SQL. Questi includono archivi di valore-chiave come Redis e Amazon DynamoDB, database a colonne larghe 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 entrare nelle loro funzionalità.
Inoltre, ci divertiremo un po' lungo la strada.

Spiegare SQL alla nonna

Nonna, immagina che io non sia il tuo unico nipote. Invece mamma e papà si sono amati come conigli, hanno avuto 100 figli, poi ne hanno adottati altri 50.

Quindi, ami tutti noi e non vuoi dimenticare nessuno dei nostri nomi, compleanni, gusti di gelato preferiti, taglie di abbigliamento, hobby, nomi dei coniugi, nomi dei figli e altri fatti super importanti. Tuttavia, ammettiamolo. Hai 85 anni e la buona vecchia memoria non ce la fa proprio.

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

Su un foglio di carta, facciamo un elenco chiamato "nipoti". Ogni nipote registrato con alcune informazioni significative su di lui, compreso un numero univoco che ora indicherà come nipote egli è. Inoltre, per motivi di organizzazione, scriviamo gli attributi denominati in cima all'elenco in modo da sapere sempre quali informazioni contiene l'elenco.

id
Nome
compleanno
l'ultima visita
taglia
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

…continuiamo la lista!

Elenco dei nipoti

Dopo un po' capisci tutto e abbiamo quasi finito con la lista! Tu però ti rivolgi a me e dici: “Ci siamo dimenticati di aggiungere spazio per i coniugi, gli hobby, i nipoti!” Ma no, non lo abbiamo dimenticato! Questo segue ulteriormente e richiede un nuovo foglio di carta.

Quindi tiro fuori un altro foglio di carta e su di esso chiamiamo l'elenco Coniugi. Aggiungiamo nuovamente gli attributi che sono importanti per noi in cima all'elenco e iniziamo ad aggiungere righe.

id
nipote_id
Nome
compleanno

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…più sposi!

Elenco dei coniugi

A questo punto, spiego a mia nonna che se vuole sapere chi è sposato con chi, deve solo corrispondere id nella lista nipoti с nipote_id nell'elenco dei coniugi.

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

Torno tra poche ore. Sei forte, nonna! Sembra tutto perfetto, tranne l'elenco hobby. Ci sono circa 1000 hobby nell'elenco. Molti di loro sono ripetitivi; Che è successo?

nipote_id
hobby

1
bike

4
bike

3
bike

7
running

11
bike

…continuiamo!

Scusa, ho completamente dimenticato di dirlo! Usando un elenco, puoi solo tenere traccia hobby. Quindi in un altro elenco dobbiamo rintracciare nipotichi sta facendo questo hobby. Lo chiameremo "Elenco comune". Vedendo che non ti piace, mi preoccupo e torno alla modalità lista.

id
hobby

1
bike

2
running

3
nuoto

…più hobby!

Elenco degli hobby

Una volta che abbiamo il nostro elenco di hobby, creiamo il nostro secondo elenco e lo chiamiamo "Gli hobby dei nipoti'.

nipote_id
hobby_id

4
1

3
1

7
2

…Di più!

Elenco generale degli hobby dei nipoti

Dopo tutto questo lavoro, la nonna ora ha un fantastico sistema di memoria per tenere traccia di tutta la sua famiglia incredibilmente numerosa. E poi - per trattenermi più a lungo - fa la domanda magica: "Dove hai imparato a fare tutto questo?"

Database relazionali

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

Il segno distintivo dei database relazionali più diffusi è il linguaggio di interrogazione SQL (Structured Query Language). Grazie a lui, se la nonna trasferisce il suo sistema di memoria su un computer, può ottenere rapidamente risposte a domande come: "Chi non è venuto a trovarmi l'anno scorso, è sposato e non ha hobby?"

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

Alcune caratteristiche chiave di MySQL:

  • È abbastanza noto, ampiamente utilizzato e ampiamente testato.
  • Ci sono molti sviluppatori esperti che hanno esperienza con SQL e database relazionali.
  • I dati sono memorizzati in varie tabelle, il che rende facile stabilire relazioni utilizzando chiavi primarie ed esterne (identificatori).
  • È facile da usare ed efficiente, il che lo rende ideale per aziende grandi e piccole.
  • Il codice sorgente è sotto i termini della GNU General Public License.

Ora dimentica ALL.

Spiegare NoSQL alla nonna

Nonna, abbiamo una grande famiglia. Ha 150 nipoti! Molti di loro sono sposati, hanno figli, amano qualcosa e così via. Alla tua età, è impossibile ricordare tutto di tutti noi. Ciò di cui hai bisogno è un sistema di memoria!

Fortunatamente, io no volendo che tu dimentichi il mio compleanno e il mio gusto preferito di gelato, 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 mio taccuino. Poi vado alla prima pagina e comincio a scrivere tutto ciò che devi ricordare su di me. Pochi minuti dopo, la pagina ha un aspetto simile a questo.

{ 
  "_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 sia tutto pronto!”
nonna: "Aspetta, e il resto dei nipoti?"
Я: "Si, esattamente. Quindi assegna una pagina per ciascuno.
nonna: "Dovrò scrivere tutte le stesse informazioni per tutti, come ho fatto per te?"
Я: “No, solo se vuoi. Lasciami mostrare."
Afferrando la penna di mia nonna, giro la pagina e annoto rapidamente le 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 una nonna ha bisogno di ricordare qualcosa su uno dei suoi nipoti, deve solo navigare fino alla pagina giusta nel taccuino dei suoi nipoti. Tutte le informazioni su di loro verranno archiviate proprio lì sulla loro pagina, che può modificare e aggiornare rapidamente.

Quando tutto è finito, 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 documentale. I database NoSQL modellano i dati in modi che escludono le relazioni tra tabelle utilizzate nei database relazionali. Questi database sono diventati popolari all'inizio degli anni 2000 con le aziende che necessitavano di clustering di database basato su cloud a causa dei loro espliciti requisiti di ridimensionamento (come Facebook). In tali applicazioni, la coerenza dei dati era molto meno importante delle prestazioni e della scalabilità.

All'inizio, i database NoSQL venivano spesso utilizzati per attività di gestione dei dati di nicchia. Fondamentalmente, quando si trattava di applicazioni Web e cloud, i database NoSQL elaboravano e distribuivano quantità significative di dati. Agli ingegneri NoSQL piaceva anche lo schema di dati flessibile (o la mancanza di esso) in modo che fossero possibili rapidi cambiamenti nelle applicazioni che venivano aggiornate.

Caratteristiche principali di NoSQL:

  • Modo molto flessibile per archiviare i dati
  • Ridimensionamento orizzontale ai cluster
  • Possibile sequenziamento per persistenza/diffusione
  • Documenti identificati mediante chiavi univoche

Confronto dettagliato

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

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

NoSQL è facile da scalare.
MySQL ha bisogno di più gestibilità.

MySQL utilizza SQL, che viene utilizzato in molti tipi di database.
NoSQL è un progetto basato su database con implementazioni popolari.

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

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

MySQL può mostrare problemi di prestazioni per i big data.
NoSQL offre prestazioni eccellenti sui big data.

Pensieri 8base

La società 8 basedove lavoro, forniamo uno spazio di lavoro per ogni progetto con un database relazionale Aurora MySQL ospitato su AWS. Sebbene NoSQL sia una scelta logica quando la tua applicazione richiede elevate prestazioni e scalabilità, riteniamo che la solida coerenza dei dati fornita da un DBMS sia essenziale quando si creano applicazioni SaaS e altri software aziendali.

Per le startup e gli sviluppatori che creano applicazioni aziendali che richiedono reporting, integrità transazionale 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

Aggiungi un commento