Storia: Nel 2016 stavo perseguendo una laurea in informatica all’Università di Albany e ho dovuto seguire un corso di introduzione ai database.
Nel corso, ho imparato due cose:
Base di dati relazionali e non relazionali, ma non ho mai veramente imparato la differenza tra i due, così ho voluto riaccendere la mia curiosità con i database e le differenze tra i due.
- Definito da E.F Codd nel 1970, un database relazionale è un database digitale basato sul modello relazionale dei dati. I dati sono immagazzinati in tabelle contenenti righe (che rappresentano una voce) e colonne (che immagazzinano e ordinano un tipo specifico di informazione). Le relazioni sono stabilite attraverso le chiavi Primarie ed Estere.
![](https://miro.medium.com/freeze/max/60/1*aUPFfifUqVHphiEXMr8OsA.gif?q=20)
Lingue: SQL (Structured Query Language), MySQL, PostgreSQL, sqlite3
Svantaggi:
- Può gestire molte query complesse, transazioni di database e analisi di routine dei dati.
- ACID (Atomity, Consistency, Isolation, Durability): Insieme di proprietà che assicurano transazioni di database affidabili.
Svantaggi:
- Non può memorizzare immagini complesse o molto grandi, numeri, disegni e prodotti multimediali
- Può diventare molto costoso con la manutenzione e nuovi server
Grande! Ma cosa succede se i nostri set di dati sono troppo grandi o non strutturati?
Database non relazionali o NoSQL
Cos’è un database non relazionale?
- I database non relazionali esistevano già alla fine degli anni ’60, ma il termine non è stato usato fino al 1998 da Carlo Strozzi che ha guidato lo sviluppo del NoSQL.
- “Un database NoSQL (originariamente riferito a “non SQL” o “non relazionale”) fornisce un meccanismo per la memorizzazione e il recupero dei dati che è modellato con mezzi diversi dalle relazioni tabulari utilizzate nei database relazionali.” – Wikipedia
Tipi di database NoSQL:
Column Store: Utilizza il concetto di keyspace che contiene tutte le famiglie di colonne che contengono righe e colonne per memorizzare e organizzare i dati.
![](https://miro.medium.com/max/60/1*4foPsId5rOJGkk-ODUN5Aw.png?q=20)
Database: Apache HBase, Cassandra
Key-Value Store: Utilizza un array associativo (mappa o dizionario) come modello di dati fondamentale. I dati sono rappresentati come una collezione di coppie chiave-valore e una chiave apparirà al massimo una volta nella collezione. È possibile memorizzare un valore, come un intero, una stringa, una struttura JSON o un array, insieme a una chiave utilizzata per fare riferimento a quel valore.
![](https://miro.medium.com/max/60/1*purHMnfizAQQduCIjdJ10w.jpeg?q=20)
Database: Redis, Amazon DynamoDB
Graph: È un database che utilizza strutture a grafo per rappresentare e memorizzare i dati. Questo permette agli utenti la capacità di attraversare rapidamente tra tutti i valori connessi e trovare intuizioni nelle relazioni.
![](https://miro.medium.com/max/60/1*ePi79szq9FlVu7B9l61byA.png?q=20)
Database: neo4J, OrientDB, Titan
Database orientato al documento: Un database orientato ai documenti, o document store, è un programma per computer progettato per immagazzinare, recuperare e gestire informazioni orientate ai documenti, note anche come dati semi-strutturati.
![](https://miro.medium.com/max/60/1*2C6w7bG98FvSpxpKU9HVMQ.jpeg?q=20)
Database: MongoDB, Couchbase
Avantaggi:
- Grandi volumi di dati strutturati, semi-strutturati e non strutturati
- Programmazione orientata agli oggetti che è facile da usare e flessibile (MongoDB è fondamentalmente scritto in javascript)
- Efficiente, architettura scale-out invece di costosa architettura monolitica
Svantaggi:
- Meno supporto poiché i database NoSQL sono di solito open-source
- Amministrazione: I database NoSQL richiedono competenze tecniche per l’installazione e la manutenzione.
- Meno maturo. I database NoSQL sono ancora in crescita e molte caratteristiche sono ancora in fase di implementazione.
Quale usare?
Le aziende utilizzano una miscela di database tradizionali e non relazionali per soddisfare le loro esigenze e necessità di business.
Base di dati relazionali:
I database relazionali tradizionali sono molto bravi a mantenere sicure le transazioni di dati e a fare query complesse per acquisire informazioni. Le aziende che sono già strutturate e che non stanno sperimentando una crescita massiccia molto probabilmente si atterranno ai database tradizionali.
Base di dati non relazionali:
Grande per memorizzare grandi quantità di dati con poca struttura. Le aziende che crescono ad un ritmo rapido come le startup utilizzano più database non relazionali per la loro scalabilità e flessibilità. Abbinati al cloud, i database non relazionali possono anche far risparmiare alle aziende un sacco di soldi.
Data Fun Facts:
- I dati stanno crescendo più velocemente che mai ed entro l’anno 2020, circa 1,7 megabyte di nuove informazioni saranno create ogni secondo per ogni essere umano sul pianeta.
- Per allora, il nostro universo digitale accumulato di dati crescerà da 4,4 zettabyet oggi a circa 44 zettabyte, o 44 mila miliardi di gigabyte.
- Stiamo assistendo a una crescita massiccia di dati video e foto, dove ogni minuto vengono caricate fino a 300 ore di video solo su YouTube.
- Quest’anno, saranno spediti oltre 1,4 miliardi di smartphone – tutti pieni di sensori in grado di raccogliere tutti i tipi di dati, per non parlare dei dati creati dagli utenti stessi.
- Entro cinque anni ci saranno oltre 50 miliardi di dispositivi intelligenti connessi nel mondo, tutti sviluppati per raccogliere, analizzare e condividere i dati.