Cos'è il Database e differenza tra Relazionali (SQL) e Non Relazionali (NoSQL)
Eccoci qua, continuiamo con la nostra panoramica dei settori richiesti nel mercato del lavoro vicini alla programmazione!
In questo articolo parliamo di un argomento particolare, ovvero il database o base dati.
Prima di addentrarci nella tecnologia e nelle spiegazioni, cerchiamo prima di capire che cosa si intende per database. Ti faccio un esempio molto semplice, immaginatelo come un programmino, uno strumento che consente facilmente di gestire i dati di un determinato progetto. I database i possiamo utilizzare in tantissimi casi diversi, all’interno di un’app, all’interno di siti internet, nei software, essenzialmente queste competenze, che tra poco andremo a spiegare nel dettaglio, sono richieste in maniera trasversale in tanti campi diversi. Quindi il fatto che tu conosca e che diventi bravo con lo sviluppo di database, può esserti molto utile in tanti campi.
Ma in che modo vengono utilizzati i database ad esempio all’interno di un sito web?
Come ti ho detto prima ci sono vari modi per usare i database. Un esempio pratico potrebbe essere un sito e-commerce, come ad esempio Amazon. Per accedere ad Amazon, c’è un sistema di autenticazione. Questo vuol dire che per poter loggare devi inserire email e password e l’email e la password che tu stai inserendo sono stati salvati da qualche parte.
Quando tu ti sei registrato che cosa è successo? I dati che tu hai inserito sono stati salvati all’interno di un database, e quando tu effettui il login non fai altro che andare a verificare che quei dati che tu hai inserito siano presenti all’interno del database. Se sono presenti esattamente come tu li hai scritti ti viene concesso di fare l’accesso, altrimenti non puoi fare l’accesso. Altro esempio ancora possono essere i prodotti in catalogo di Amazon, tutti quei prodotti vengono salvati nel database. Nel DB andiamo a salvare tutte le informazioni che servono per far funzionare un applicazione, per far funzionare un sito, per far funzionare un servizio in generale.
Il database essenzialmente è uno strumento che consente di fare le quattro operazioni di base in maniera molto semplice: possiamo inserire dei nuovi dati, possiamo modificare dei dati già inseriti, possiamo eliminare questi dati e possiamo anche effettuare delle ricerche su questi dati.
Database Relazionali
Se non hai mai visto nulla relativo ai database devi iniziare proprio da qui. I database relazionali sono praticamente la base vengono utilizzati nel 95% dei progetti. La struttura dei database relazionali si adatta molto facilmente alla maggior parte delle problematiche che possono insorgere. Per capire il motivo per cui vengono chiamati database relazionali te lo posso spiegare prendendo come esempio la piattaforma di Instagram.
Cosa succede quando pubblichi una foto? Quella foto viene salvata in una tabella che contiene tutte le foto salvate di tutti gli utenti. Quindi ad esempio se pubblichi una nuova foto, viene aggiunta una riga in questa tabella riportante chi l’ha pubblicata, quando e il contenuto della foto.
Quando un altro utente commenta la tua foto che cosa succede? Ci sarà un’altra tabella che contiene tutti i commenti e in questa tabella ci sarà il riferimento alla tua foto e dell’utente che l’ha appena commentata. Quindi ricapitolando abbiamo due tabelle e una foto può ricevere più commenti. Questa è una relazione molto semplice.
Quindi quando noi pensiamo a un database relazionale dobbiamo innanzitutto immaginarci quali tabelle servono per poter far funzionare la nostra applicazione. Ecco perché si chiamano database relazionali. Non esiste solo un database relazionale ma ce ne sono tanti. I più comuni sono MySQL, Sequel Server e così via. In generale la cosa importante da capire di tutte queste tecnologie della famiglia dei database relazionali e che c’è una costante, ovvero il linguaggio SQL. Questo linguaggio è uno dei linguaggi più richiesti. Non è un linguaggio di programmazione ma semplicemente un linguaggio di interrogazione ed è una costante di tutti i database relazionali. Una volta che tu hai imparato il linguaggio SQL sarai in grado tendenzialmente di utilizzare la maggior parte di quelli che sono i database relazionali.
Anche se ogni singolo database ha le sue peculiarità e le sue caratteristiche, tendenzialmente il linguaggio SQL ti consente di avere la competenza per poter effettuare delle interrogazioni.
Ma cosa sono queste interrogazioni? A cosa serve questo linguaggio SQL? Te lo spiego subito. Prima ti ho detto che serviva essenzialmente per fare quattro operazioni base:
- Inserimento
- Modifica
- Eliminazione
- Ricerca
Con il linguaggio SQL possiamo fare queste quattro interrogazioni. Quindi se hai imparato ad utilizzare il linguaggio SQL hai imparato due cose specifiche:
- Come modellare i dati, cioè dato un problema quali tabelle creare e che relazioni creare tra queste tabelle e quali campi mettere all’interno di ogni tabella
- Padroneggiare il linguaggio SQL
Una volta che ha imparato queste due cose potrai utilizzare i database relazionali in tantissimi settori diversi.
Database non relazionali
La prima cosa che devi sapere su database non relazionali è che in realtà sono praticamente l’opposto dei database relazionali. Ti spiego meglio, i database relazionali praticamente vanno benissimo per il 95% delle casistiche. Ciò vuol dire che si possono applicare a tanti progetti diversi; vuol dire che utilizziamo sempre la stessa tecnologia per un e-commerce, per un social network e così via.
Tuttavia ci sono alcune casistiche molto particolari in cui i database relazionali non vanno bene. Per risolvere queste casistiche molto specifiche sono nati appunti i database non relazionali, che tendenzialmente vanno bene per risolvere quelli che sono diciamo così il 5% dei problemi che possono avere i siti, i servizi web e applicazioni.
Quindi ovviamente sono meno richiesti nel mercato e di conseguenza queste competenze sono meno richiesta. Altra differenza è che sono tanti e sono tutti diversi l’uno dall’altro. Questo vuol dire che ogni singolo database non relazionale cerca di risolvere dei problemi diversi dagli altri.
Se i database relazionali si basavano sul linguaggio SQL, i database non relazionali si appoggiano a vari linguaggi a seconda del problema che dobbiamo andare a risolvere. Per esempio potremmo pensare alla mole di dati che dobbiamo gestire in un gioco online, i quali cambiano in maniera repentina.
Esattamente nello stesso modo possiamo prendere in considerazione Facebook. Se vogliamo fare in maniera molto semplice un’interrogazione al nostro database per capire qual è magari la seconda cerchia di amici che potrebbero essere delle persone che io conosco ma a cui non ho ancora richiesto l’amicizia, se noi dobbiamo fare questo tipo di interrogazione da un punto di vista di database relazionale avremo delle grandissime difficoltà. Questo perché nel database relazionale già soltanto modellare i dati per andare a risolvere questo tipo di problematica è molto complesso, perché il tipo di struttura dei database relazionali non si adatta a questo tipo di problema. A questo punto andremo ad utilizzare un database a grafo, che fa parte della famiglia dei database non relazionali.
Quindi i database non relazionali possiamo considerarli come una sorta di evoluzione dei database relazionali. Questi database non hanno uno standard come linguaggio, nel senso che non c’è un linguaggio dominante, tendenzialmente ogni database ha le sue peculiarità e ha i suoi linguaggi di interrogazione. Se non hai mai visto nulla di database non partire dai database non relazionali, parti dai database relazionali prima perché sono molto richiesti nel mercato del lavoro dal momento che si adattano alla maggior parte delle problematiche dei progetti. In ogni caso avere delle basi di database relazionali e di SQL ti dà delle basi per poi approcciare i database non relazionali.
Tipologie di lavoro legate ai database
Quando si opera con i database, essenzialmente ci sono due tipologie di lavori:
- Lavoro legato alla programmazione, cioè chi va a scrivere il codice di un sito internet deve interagire in qualche modo con i database. Devi avere quelle due competenze che ti ho detto prima, cioè devi saper modellare i dati e devi conoscere il mondo SQL.
- Lavori architetturali. È un concetto un pochino particolare e complesso. Come dicevamo prima un database è una specie di programmino che inseriamo in un server/computer. A seconda della mole di dati che dobbiamo interrogare, avremmo bisogno di un server più o meno grande e più o meno costoso. Dobbiamo pure valutare la zona in cui dovremmo piazzare questi server (nazionale, continentale, mondiale, ecc…). Dobbiamo calcolare le evenienze in cui magari ci sia un incendio, un allagamento, manchi la corrente. Ovviamente bisogna fare uno studio architetturale, bisogna quindi valutare quali sono le possibili soluzioni e come strutturare la nostra infrastruttura in modo tale che anche in queste situazioni i nostri dati siano comunque presenti e raggiungibili dalla nostra applicazione/sito internet. Tendenzialmente al giorno d’oggi è una parte collegata anche al mondo del Cloud.
Quindi riassumendo, se sei un principiante ti consiglio di iniziare a fronteggiare i database relazionali e focalizzarti su lavori legati alla programmazione. I database non relazionali e i lavori architetturali li potrai approfondire una volta che avrai compreso bene le basi.
Noi abbiamo creato un corso il cui obiettivo è quello di far assumere il più velocemente possibile i nostri studenti all’interno delle aziende.
Ovviamente all’interno del corso Java siamo andati ad insegnare il linguaggio di programmazione più richiesto nel mercato del lavoro. Tuttavia alla fine di questo corso oltre a dare dei consigli su come migliorare il curriculum, su come affrontare i colloqui, su come cercare le aziende, andiamo ad parlare proprio questi due concetti relativi all’SQL, quindi effettivamente ti diamo anche delle basi.
Per quanto riguarda la parte di sviluppo è richiestissimo il linguaggio SQL, la modellazione dei dati, quindi avendo queste due skill a tua disposizione, avendo queste due competenze, avrai davvero tantissime possibilità dal punto di vista lavorativo.
Ovviamente come ti ho detto si può sempre crescere, si può passare ai database non relazionali, si può passare addirittura alla parte architetturale. Insomma si può fare veramente tanto in campo di database.