SQL permette di creare database re­la­zio­na­li e di eseguire varie ope­ra­zio­ni sui database esistenti, comprese le in­ter­ro­ga­zio­ni dei dati. Il lin­guag­gio fa parte del re­per­to­rio standard di sviluppo web, analisi di dati e ricerca. Rispetto ad altri linguaggi di pro­gram­ma­zio­ne, SQL presenta alcune pe­cu­lia­ri­tà. Di seguito il­lu­stria­mo le ca­rat­te­ri­sti­che di questo lin­guag­gio.

Che cos’è SQL? Una spie­ga­zio­ne

SQL sta per “Struc­tu­red Query Language” (“lin­guag­gio di in­ter­ro­ga­zio­ne strut­tu­ra­to”). Esso serve a ef­fet­tua­re in­ter­ro­ga­zio­ni su database che con­ten­go­no dati strut­tu­ra­ti o re­la­zio­na­li. È un lin­guag­gio basato sull’“algebra re­la­zio­na­le”, una teoria ma­te­ma­ti­ca per la strut­tu­ra­zio­ne dei dati e il calcolo dei risultati delle query. Da questa base ma­te­ma­ti­ca derivano molte delle ca­rat­te­ri­sti­che peculiari di SQL come lin­guag­gio di pro­gram­ma­zio­ne. Nato a metà degli anni ‘70, è oggi con­si­de­ra­to il lin­guag­gio di pro­gram­ma­zio­ne standard per le ap­pli­ca­zio­ni di database.

Uno dei dettagli im­por­tan­ti di SQL è che si tratta di un lin­guag­gio di pro­gram­ma­zio­ne e in­ter­ro­ga­zio­ne puro, non di un sistema completo di gestione di database (DBMS). Tra i DBMS più diffusi che im­ple­men­ta­no SQL ci sono MySQL, Oracle SQL e SQLite. Tuttavia, si tratta per lo più di DBMS che uti­liz­za­no dialetti di SQL, che possono avere comandi ag­giun­ti­vi e/o diversi.

Managed Database Services
Con­cen­tra­ti sul tuo progetto, noi pensiamo al resto
  • Partner IONOS Cloud
  • Soluzioni fles­si­bi­li e su misura
  • Data center situati in Europa

SQL come lin­guag­gio di­chia­ra­ti­vo e specifico del dominio

A dif­fe­ren­za della maggior parte dei linguaggi di pro­gram­ma­zio­ne con­so­li­da­ti, SQL è speciale perché è un lin­guag­gio specifico del dominio (Domain-Specific Language, DSL). Infatti, mentre i linguaggi generici (General Purpose Language, GPL) possono essere uti­liz­za­ti in molte ap­pli­ca­zio­ni diverse, SQL può essere uti­liz­za­to solo in uno scenario, quello dei database.

Oltre a ciò, si tratta di un lin­guag­gio di pro­gram­ma­zio­ne di­chia­ra­ti­vo. In altri termini, chi programma inserisce un risultato de­si­de­ra­to come comando e il sistema si assicura che questo risultato venga raggiunto. Ciò è in contrasto con la co­sid­det­ta pro­gram­ma­zio­ne im­pe­ra­ti­va, in cui i singoli passaggi per rag­giun­ge­re gli obiettivi sono espli­ci­ta­men­te spe­ci­fi­ca­ti nel codice.

A che cosa serve SQL?

In primo luogo, SQL funge da in­ter­fac­cia per in­te­ra­gi­re con i sistemi di gestione dei database re­la­zio­na­li (RDBMS). Un database re­la­zio­na­le può essere con­si­de­ra­to come una tabella in cui ogni riga ha un insieme pre­de­ter­mi­na­to di attributi che vengono popolati con dei valori. Il codice SQL può essere inserito ma­nual­men­te tramite un’in­ter­fac­cia testuale o integrato in accessi API.

Vantaggi e svantaggi di SQL

Vantaggi di SQL

Il vantaggio prin­ci­pa­le di SQL è l’alto profilo e la dif­fu­sio­ne della tec­no­lo­gia. A partire dalle sue origini negli anni ‘70, è stato lo standard in­du­stria­le per le ap­pli­ca­zio­ni di database. È quindi re­la­ti­va­men­te facile trovare persone esperte di pro­gram­ma­zio­ne SQL, così come in­ter­fac­ce con altre tec­no­lo­gie e linguaggi comuni.

SQL è diventato lo standard del settore per un motivo preciso: il lin­guag­gio si basa su una solida base ma­te­ma­ti­ca che consente di ar­chi­via­re i dati in modo ottimale. Le basi di dati re­la­zio­na­li, tuttavia, ri­chie­do­no una solida com­pren­sio­ne della tec­no­lo­gia e della teoria, nonché abilità e pia­ni­fi­ca­zio­ne nella mo­del­la­zio­ne. Uno schema di database ben pro­get­ta­to consente di ottenere nuove co­no­scen­ze dai dati tramite query ap­pro­pria­te.

Svantaggi di SQL

Uno degli svantaggi di SQL e dei database re­la­zio­na­li in generale è l’elevata com­ples­si­tà della tec­no­lo­gia. SQL comprende centinaia di comandi e clausole, che co­sti­tui­sco­no una grande sfida per chi è agli inizi. A peg­gio­ra­re le cose, molti di essi sono specifici per l’im­ple­men­ta­zio­ne.

In aggiunta, la co­stru­zio­ne di un database re­la­zio­na­le richiede una serie di as­sun­zio­ni sui dati da me­mo­riz­za­re. Tali ipotesi servono a garantire la qualità dei dati me­mo­riz­za­ti, ma com­por­ta­no anche una serie di li­mi­ta­zio­ni che causano problemi duraturi se lo schema è pro­get­ta­to male. Mo­di­fi­ca­re lo schema durante il fun­zio­na­men­to può essere una sfida seria. Oltre a questa mancanza di fles­si­bi­li­tà, ge­ne­ral­men­te è molto difficile di­stri­bui­re geo­gra­fi­ca­men­te un database SQL. Di con­se­guen­za, ot­ti­miz­za­re le pre­sta­zio­ni di un database at­tra­ver­so la de­cen­tra­liz­za­zio­ne è tutt’altro che banale.

Un ultimo svan­tag­gio di SQL è la sua in­com­pa­ti­bi­li­tà con la popolare pro­gram­ma­zio­ne orientata agli oggetti, che sta di­ven­tan­do sempre più rilevante. Nella pro­gram­ma­zio­ne orientata agli oggetti, i dati e il “com­por­ta­men­to” (metodi) sono in­cap­su­la­ti in oggetti e vengono ereditati at­tra­ver­so gerarchie di classi. L’approccio re­la­zio­na­le presenta una dif­fe­ren­za so­stan­zia­le, poiché i dati possono essere di­stri­bui­ti su più tabelle. In aggiunta, è im­pos­si­bi­le modellare il com­por­ta­men­to di un oggetto. Per questo motivo, gli oggetti non possono essere tra­sfe­ri­ti in modo identico in strutture di database re­la­zio­na­li.

Al­ter­na­ti­ve a SQL

Dal momento che SQL è stato inventato all’inizio della ri­vo­lu­zio­ne digitale, il lin­guag­gio non ha perso la sua im­por­tan­za. Nel frattempo, però, sono emersi alcuni schemi al­ter­na­ti­vi che possono essere più adatti ad alcune ap­pli­ca­zio­ni.

Sistemi di gestione di database re­la­zio­na­li a oggetti

I sistemi di gestione di database re­la­zio­na­li a oggetti (ORDBMS) come Post­gre­SQL impiegano SQL come lin­guag­gio di in­ter­ro­ga­zio­ne, ma sup­por­ta­no anche i concetti fon­da­men­ta­li della pro­gram­ma­zio­ne orientata agli oggetti. Perciò, le gerarchie di oggetti, l’ere­di­ta­rie­tà e il com­por­ta­men­to degli oggetti possono essere uti­liz­za­ti senza ricorrere alla mappatura re­la­zio­na­le degli oggetti (Object-Re­la­tio­nal Mapping, ORM). Nella fat­ti­spe­cie, i tipi di dati definiti dall’utente e i tipi di dati compositi riducono la com­ples­si­tà degli schemi e delle query.

NoSQL

I DBMS basati su SQL sono destinati prin­ci­pal­men­te all’ar­chi­via­zio­ne di dati strut­tu­ra­ti, ma non tutti i dati seguono uno schema fisso. A questo proposito, entrano in gioco i database NoSQL. Il termine NoSQL si riferisce a una famiglia di DBMS non re­la­zio­na­li. Anziché modellare i dati come campi di una tabella, si uti­liz­za­no approcci diversi.

Uno dei più diffusi è l’ar­chi­via­zio­ne dei dati basata sui documenti: invece di me­mo­riz­za­re i dati in una tabella, vengono ar­chi­via­ti in singoli documenti. Il vantaggio di questo approccio è che i dati possono essere auto-scritti. Quindi, lo schema dei dati è de­ter­mi­na­to dal singolo documento, non dal database, per cui le voci dei dati possono seguire schemi diversi.

In genere, le soluzioni NoSQL sono meno complesse e portano vantaggi in termini di sca­la­bi­li­tà e ot­ti­miz­za­zio­ne delle pre­sta­zio­ni. Inoltre, con­sen­to­no di mo­di­fi­ca­re lo schema durante il fun­zio­na­men­to in maniera più semplice e di me­mo­riz­za­re i dati in modo fles­si­bi­le. Di contro, non sono in grado di fornire al­tret­tan­te garanzie sulla qualità dei dati.

Vai al menu prin­ci­pa­le