SQLite
Da Wikipedia, l'enciclopedia libera.
SQLite è una libreria C che implementa un DBMS SQL incorporabile all'interno di applicazioni. Il suo creatore è D. Richard Hipp, che lo ha rilasciato come software Open Source di pubblico dominio, privo di qualsiasi licenza.
Essendo una libreria, non è un processo standalone utilizzabile di per sé, ma può essere linkato all'interno di un altro programma. È utilizzabile con C/C++ ed esistono binding anche per altri linguaggi, in particolare Tcl. È integrato nella versione 5 di PHP.
Il pacchetto ha molte interessanti caratteristiche:
- è molto piccolo (meno di 250KB per l'intera libreria)
- è molto veloce; in molti casi più veloce 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
- contiene un programma di utilità che permette l'accesso al database anche manualmente (come MySQL e Postgresql e tanti altri DB) o tramite scripting
- supporta database che possono essere anche molto grandi; attualmente il limite è 2TB (241 byte)
- il database consiste di un unico file il cui formato interno è indipendente dalla piattaforma
- non ha dipendenze esterne
- normalmente non richiede alcun lavoro di amministrazione, ma supporta il comando SQL VACUUM nel caso si renda necessario
Ci sono, naturalmente, anche degli svantaggi:
- non possiede stored procedures, gestione dei permessi e molte altre funzionalità tipiche dei "colossi"
- non ha una vera gestione della concorrenza (le applicazioni che lo utilizzano, se necessario, devono implementarla)
- 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 standalone; è possibile utilizzare un database in remoto, ma solo servendosi del filesystem del sistema operativo, con prestazioni difficilmente accettabili
- non è in grado di gestire dati binari in modo sicuro
- non supporta alcuni importanti comandi SQL:
- RIGHT e FULL OUTER JOIN
- sottoquery variabili
- transazioni annidiate
- ALTER TABLE offre pochissime possibilità
Una sua peculiarità è il gestire i "tipi" in modo molto flessibile: ogni campo può contenere qualsiasi tipo di dato (o quasi; gestito differentemente nella versione 2 e 3).