SQLite

Da Wikipedia, l'enciclopedia libera.
SQLite
Logo di SQLite
Sviluppatore D. Richard Hipp
Ultima versione 3.8.4.3 (03 aprile 2014)
Sistema operativo Multipiattaforma
Linguaggio C
Genere Relational database management system
Licenza Public domain o Licenza commerciale
(Licenza libera)
Lingua inglese
Sito web sqlite.org

SQLite è una libreria software scritta in linguaggio C che implementa un DBMS SQL di tipo ACID incorporabile all'interno di applicazioni. Il suo creatore, D. Richard Hipp, lo ha rilasciato nel pubblico dominio, rendendolo utilizzabile quindi senza alcuna restrizione. Permette di creare una base di dati (comprese tabelle, query, form, report) incorporata in un unico file, come nel caso dei moduli Access di Microsoft Office e Base di OpenOffice.org e analogamente a prodotti specifici come Paradox o Filemaker.

SQLite non è un processo standalone utilizzabile di per sé, ma può essere incorporato all'interno di un altro programma. È utilizzabile con il linguaggio C/C++, ed esistono binding anche per altri linguaggi, in particolare Tcl. È inoltre stato integrato nella versione 5 di PHP, consentendo a tale popolare linguaggio di disporre di un altro RDBMS indipendentemente dalla presenza di MySQL. Viene utilizzato in Mozilla Firefox e Seamonkey per memorizzare i bookmark, la cronologia di navigazione ed altre informazioni.

Caratteristiche e limitazioni[modifica | modifica sorgente]

La libreria offre molte interessanti caratteristiche:

  • è compatta (meno di 500KB per l'intera libreria alla versione 3.6.14);
  • è molto veloce; in molti casi più di MySQL e PostgreSQL;
  • il codice sorgente è liberamente disponibile, chiaro e ben commentato;
  • è in grado di interpretare stringhe SQL; a differenza di altre librerie simili, supporta buona parte dello standard SQL92;
  • l'API è semplice da utilizzare;
  • ha transazioni atomiche, consistenti, isolate e durabili (ACID), anche in caso di crash di sistema o blackout;
  • è multipiattaforma;
  • include un programma di utilità a riga di comando per accedere al database anche manualmente (come su MySQL, Postgresql e tanti altri DB) o tramite scripting;
  • supporta database che possono essere anche molto grandi; attualmente il limite è 2TB (2^{41} byte);
  • un database consiste di un unico file, il cui formato interno è indipendente dalla piattaforma e dal relativo ordine dei byte;
  • non ha dipendenze esterne;
  • normalmente non richiede alcun lavoro di amministrazione, ma supporta il comando "SQL VACUUM" nel caso si renda necessario compattare esplicitamente i dati del database.

SQLite presenta dei limiti legati in parte alla finalità di semplice database da incorporare in altre applicazioni:

  • non offre le stored procedure.
  • non prevede la gestione dei permessi d'accesso, demandata al software con cui si interagisce con il database e/o al meccanismo dei permessi del file system;[1]
  • non ha una vera gestione della concorrenza: le applicazioni che lo utilizzano, se necessario, devono implementarla;
  • per garantire la coerenza del file del database sono usati i lock del file system, e quindi vi possono essere problemi qualora quest'ultimo non li implementi correttamente, ad esempio con file system di rete (come NFS);
  • non offre alcuna cache per le query (e non ne ha la possibilità, non esistendo un processo server centrale);
  • non ha protocolli di rete, non essendo utilizzabile come programma a sé; è possibile utilizzare un database remoto, ma solo tramite file system di rete del sistema operativo, con prestazioni difficilmente accettabili;
  • non supporta alcuni importanti costrutti SQL quali RIGHT JOIN e FULL OUTER JOIN;[1]
  • non supporta le sottoquery variabili.
  • non supporta la scrittura diretta nelle viste (occorre usare trigger "INSTEAD OF");[1]
  • non consente di modificare, cancellare o rinominare le colonne di una tabella:[1] il comando ALTER TABLE è infatti limitato alla modifica del nome della tabella e all'aggiunta di colonne in coda alla stessa. Molti frontend di terze parti aggirano comunque il limite rigenerando in modo trasparente la tabella (perdendo però trigger e indici ad essa correlati);
  • non supporta trigger di tipo "FOR EACH STATEMENT" (solo "FOR EACH ROW", eventualmente combinato con "INSTEAD OF");[1]
  • il supporto ai trigger ricorsivi ed ai vincoli sulle chiavi esterne, introdotto rispettivamente nelle versioni 3.6.18 e 3.6.19, deve essere attivato dal programmatore; tale comportamento, dovuto alla compatibilità con le versioni precedenti, sarà modificato a partire dalla versione 3.7.

Una peculiarità di SQLite è la gestione flessibile dei tipi di dati: ogni campo può contenere qualsiasi tipo di dato (o quasi; gestito differentemente nella versione 2 e 3).

Interfacce grafiche per SQLite[modifica | modifica sorgente]

Pur gestibile da altre applicazioni, esistono delle interfacce grafiche appositamente sviluppate per SQLite:

  • DaDaBIK (sito)- applicazione PHP Open Source che permette di creare un Web front-end per SQLite senza scrivere codice. Anche per MySQL e PostgreSQL;
  • SpatiaLite (sito)- estensione per il supporto dei dati geografici all'interno di database SQLite, può essere utilizzato da console o tramite un'interfaccia grafica dedicata.
  • SQLite Database Browser (sito)— è un'applicazione multipiattaforma che consente di amministrare in modo semplificato, con una interfaccia grafica, database di SQLite; Licenza public domain
  • TkSQLite (sito)— applicazione multipiattaforma. Licenza BSD-style
  • sqlite-manager (sito)— è una estensione per browser basati su Gecko (Firefox 3, Thunderbird 3, Seamonkey 2, Sunbird 1.0, Komodo 5.0, etc.) multipiattaforma, che consente di amministrare in modo semplificato, con l'interfaccia grafica del browser, database di SQLite;
  • SQLiteManager (sito)— è un'applicazione multipiattaforma, basata sul web, che consente di amministrare in modo semplificato, con una interfaccia grafica, database di SQLite; Lingua francese
  • Sqliteman (sito)— applicazione realizzata con le librerie Qt4 - versione per GNU/Linux, Mac, Windows, richiede SQLite versione 3.
  • Database Master (sito) per Windows, anche per MySQL, PostgreSQL, FireBird, Oracle, DB2, Informix, ODBC, OleDB, SQL-Server, MongoDB.

Diffusione[modifica | modifica sorgente]

Mozilla Firefox e Mozilla Thunderbird memorizzano varie informazioni di configurazione (segnalibri, cookie, contatti della rubrica, ecc) in database SQLite. Skype è un altro software molto diffuso che utilizza SQLite.[2] Adobe Systems utilizza SQLite come formato file in Adobe Photoshop Lightroom, come database di appoggio alle applicazioni in Adobe AIR e internamente in Adobe Reader.[3]

Grazie alle ridotte dimensioni SQLite è particolarmente adatto ai sistemi embedded. SQLite viene inoltre utilizzato nel sistema operativo dell'iPhone Apple per la gestione degli SMS e MMS, per il calendario, la cronologia delle chiamate e la memorizzazione dei contatti. La libreria è inoltre utilizzata in Symbian OS ed Android, sul sistema operativo del BlackBerry e su webOS di Palm.[4]

Note[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]

Software libero Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero