SQLite è una libreria software leggera e in­di­pen­den­te, o anche un database, già integrato in numerose ap­pli­ca­zio­ni. Questo sistema di database si con­trad­di­stin­gue so­prat­tut­to per il non utilizzo di una struttura client-server. Le al­ter­na­ti­ve più co­no­sciu­te a SQLite sono MySQL, MongoDB e Post­gre­SQL.

Cos’è SQLite?

SQLite è il sistema di database più diffuso e uti­liz­za­to al mondo. Il software, ori­gi­na­ria­men­te pro­get­ta­to da D. Richard Hipp nel 2000 per l’esercito degli Stati Uniti, è ora di dominio pubblico e quindi privo di copyright. Il nome “SQLite” è composto da “SQL”, ab­bre­via­zio­ne di “Struc­tu­red Query Language”, e “lite”, un termine col­lo­quia­le per indicare una versione più leggera e meno im­pe­gna­ti­va per la memoria.

Questo nome si spiega, tra l’altro, con il fatto che il sistema di database re­la­zio­na­le SQLite, a dif­fe­ren­za di altri database comuni, non richiede alcun software server ag­giun­ti­vo. Anche le di­men­sio­ni ridotte, pari a poche centinaia di kilobyte, e la pos­si­bi­li­tà di me­mo­riz­za­re un intero database in un solo file hanno influito nella scelta.

SQLite è scritto nel lin­guag­gio di pro­gram­ma­zio­ne web C ed è uti­liz­za­to in numerosi sistemi operativi e programmi, tra cui Android, iOS e Windows Phone, il servizio di mes­sa­gi­sti­ca istan­ta­nea Skype e i browser SQLite di Google Chrome, Mozilla Firefox e Safari. I ri­spet­ti­vi dati sono me­mo­riz­za­ti in tabelle nella libreria del programma e possono essere re­cu­pe­ra­ti colonna per colonna. Tramite l’in­ter­fac­cia C o una come quelle di Ruby, PHP o Python, l’in­te­gra­zio­ne in altri programmi è possibile fa­cil­men­te.

Con SQLite3 in Python, il lin­guag­gio di pro­gram­ma­zio­ne dispone persino di un modulo di in­te­gra­zio­ne per SQLite. Inoltre, non è ne­ces­sa­rio in­stal­la­re o con­fi­gu­ra­re il sistema di database open source.

Come funziona SQLite?

SQLite non richiede una lunga fase di ap­pren­di­men­to, ma può essere integrato di­ret­ta­men­te in un’ap­pli­ca­zio­ne senza l’uso di software server ag­giun­ti­vi. L’ap­pli­ca­zio­ne riceve quindi au­to­ma­ti­ca­men­te funzioni complete di database senza bisogno di strumenti ag­giun­ti­vi. Tutte le tabelle, i ri­fe­ri­men­ti, i col­le­ga­men­ti e simili sono contenuti in un unico file di minimo ingombro, che può anche essere me­mo­riz­za­to nella memoria prin­ci­pa­le.

Di con­se­guen­za, è molto facile uti­liz­za­re un file in sistemi diversi. Anche perché qualsiasi dato può essere me­mo­riz­za­to all’interno di una tabella. Questi vengono poi con­ver­ti­ti solo se ne­ces­sa­rio, in modo che sia possibile anche passare da un sistema all’altro con un ordine diverso di byte.

Come sistema di gestione di database re­la­zio­na­li, SQLite utilizza un principio a due chiavi per iden­ti­fi­ca­re le voci di una tabella e per collegare tabelle diverse tra loro. A questo scopo vengono uti­liz­za­te una chiave primaria e una chiave esterna.

  • Chiave primaria: è un valore univoco che può essere assegnato a una riga specifica della tabella.
  • Chiave esterna: viene uti­liz­za­ta per collegare tra loro diverse tabelle.

Questi ri­fe­ri­men­ti for­ni­sco­no una struttura molto più snella e fa­ci­li­ta­no il lavoro con SQLite rispetto ad altri database. Questi attributi hanno anche con­tri­bui­to alla dif­fu­sio­ne mondiale del sistema di database.

Quali tipi di dati sono possibili in SQLite?

In SQLite i dati possono essere me­mo­riz­za­ti in vari formati. Ciò significa anche che non è per forza ne­ces­sa­ria una con­ver­sio­ne per l’ulteriore ela­bo­ra­zio­ne tra i vari sistemi. I tipi di dati che possono essere salvati e me­mo­riz­za­ti sono i seguenti:

  • INTEGER: comprende tutti i valori interi.
  • REAL: include le rap­pre­sen­ta­zio­ni ap­pros­si­ma­te di un numero reale come numero in virgola mobile.
  • TEXT: include tutti i contenuti del testo normale.
  • BLOB: sta per Binary Large Object e contiene valori binari come miniature o file di con­fi­gu­ra­zio­ne nel formato XML.
  • NULL: anche i valori nulli possono essere rap­pre­sen­ta­ti in SQLite.

Ciò significa che tutti i tipi di dati più comuni possono essere me­mo­riz­za­ti in SQLite.

Come vengono me­mo­riz­za­ti i dati in SQLite?

In SQLite esistono due modi per garantire la coerenza di un database. Questi metodi fun­zio­na­no come segue:

  • Rollback Journal: con questo metodo viene creato au­to­ma­ti­ca­men­te un registro tem­po­ra­neo (in inglese: “journal”) di tutte le modifiche apportate, che contiene il nome del ri­spet­ti­vo database e l’esten­sio­ne “-journal”. In caso di problemi con il database o con singoli file, si può usare questo metodo per tornare a uno stato pre­ce­den­te.
  • Write Ahead Log (WAL): con un Write Ahead Log, tutte le modifiche vengono salvate in un file di log. Quando il database viene chiuso come previsto, i dati vengono fi­nal­men­te inseriti nel database. In al­ter­na­ti­va, è possibile salvarli ma­nual­men­te con un comando commit. Allo stesso tempo, viene creato un indice nel file di memoria condivisa (SHM).

Quali sono i vantaggi di SQLite?

SQLite offre numerosi vantaggi e si è gua­da­gna­to una buona re­pu­ta­zio­ne tra gli svi­lup­pa­to­ri e le svi­lup­pa­tri­ci di ap­pli­ca­zio­ni com­mer­cia­li e gli utenti privati. I seguenti aspetti, tra gli altri, parlano a favore del sistema re­la­zio­na­le:

Di­men­sio­ne

L’utilizzo minimo della memoria è un grande vantaggio del sistema di database. Con poche centinaia di kilobyte, una libreria occupa po­chis­si­mo spazio, il che a sua volta ha un effetto positivo sulla velocità. Con­si­de­ran­do questo punto, SQLite è all’altezza del suo nome e si dimostra una soluzione solida per ap­pli­ca­zio­ni grandi e piccole.

Nessuna necessità di software ag­giun­ti­vi

SQLite funziona senza software server ag­giun­ti­vi e può essere integrato in modo semplice. Non sono necessari altri programmi o pacchetti esterni. Di con­se­guen­za, anche la potenza del server che deve essere fornita è molto gestibile.

Ver­sa­ti­li­tà

Non solo SQLite supporta la maggior parte dei comandi del lin­guag­gio SQL, ma la sua com­pa­ti­bi­li­tà con la maggior parte degli archivi di dati più comuni è un grande vantaggio. Non per niente la libreria è uti­liz­za­ta in numerose ap­pli­ca­zio­ni come Facebook o WhatsApp, oltre che in tutti i più comuni sistemi operativi per computer desktop e cellulari, browser e molti programmi com­mer­cia­li. Poiché anche lo scambio tra due sistemi diversi è possibile senza grandi dif­fi­col­tà, numerosi svi­lup­pa­to­ri si affidano a questa soluzione leggera come base per il loro software.

Por­ta­bi­li­tà

Gli aspetti sopra descritti fanno sì che i file SQLite siano molto facili da salvare e tra­spor­ta­re. Poiché non è ne­ces­sa­rio con­fi­gu­ra­re SQLite in modo estensivo e i ri­spet­ti­vi file sono in­di­pen­den­ti dai programmi del server, possono essere uti­liz­za­ti fa­cil­men­te su sistemi diversi.

A prova di errore

L’accesso unificato ai dati, il basso consumo di risorse e l’in­di­pen­den­za da una struttura server-client rendono SQLite un’opzione molto sicura. Anche gli errori di memoria o i problemi causati da una RAM in­suf­fi­cien­te in­flui­sco­no molto meno.

Dominio pubblico

SQLite è di­spo­ni­bi­le senza licenza. Solo alcuni com­po­nen­ti ag­giun­ti­vi e il supporto sono a pagamento.

Quali sono gli svantaggi di SQLite?

Oltre ai vantaggi, SQLite presenta anche alcuni svantaggi che è bene conoscere e tenere in con­si­de­ra­zio­ne se si pensa di uti­liz­za­re questo sistema di database. Tra questi, in par­ti­co­la­re, vi sono i seguenti:

Li­mi­ta­zio­ne dell’utente

SQLite non dispone di un’opzione per gli account utente multipli, il che lo dif­fe­ren­zia da altri provider. Non è quindi possibile una con­nes­sio­ne con più client.

Requisiti di spazio crescenti

Anche se SQLite è una soluzione molto leggera, la richiesta di spazio aumenta quanto più grande diventa il database. Questo può ri­per­cuo­ter­si ne­ga­ti­va­men­te sulle pre­sta­zio­ni.

Fles­si­bi­li­tà

È vero che SQLite è una soluzione com­ples­si­va­men­te fles­si­bi­le, so­prat­tut­to grazie alla sua in­di­pen­den­za da strutture server esterne. Tuttavia, questo significa anche che non è possibile ef­fet­tua­re query di dati dal client. Inoltre, non è possibile elaborare più con­nes­sio­ni con­tem­po­ra­nea­men­te, con con­se­guen­ti ritardi.

Quali sono le al­ter­na­ti­ve alla libreria software?

Esistono numerose al­ter­na­ti­ve a SQLite. Oltre alla soluzione orientata ai documenti NoSQL MongoDB e a quella re­la­zio­na­le Post­gre­SQL, MySQL in par­ti­co­la­re è un’al­ter­na­ti­va molto diffusa, in parte pro­prie­ta­ria e in parte open source. Questa opzione si rivela anche molto facile da usare. Imparate a uti­liz­za­re MySQL nel tutorial della Digital Guide.

Consiglio

Massima fles­si­bi­li­tà a un prezzo contenuto: con Managed MongoDB di IONOS be­ne­fi­cia­te della sca­la­bi­li­tà oriz­zon­ta­le, della piena com­pa­ti­bi­li­tà e del supporto com­pe­ten­te dei nostri esperti e delle nostre esperte. Scegliete il modello più adatto alle vostre esigenze tra le diverse tariffe.

Vai al menu prin­ci­pa­le