SQLite e' il database relazionale piu' installato nel mondo! SQLite e' molto semplice e la sua libreria puo' essere facilmente inclusa nei programmi che lo richiedono e cosi' avviene in milioni di casi. SQLite fornisce una base dati transazionale, acceduta tramite SQL e non richiede alcuna attivita' di amministrazione o di gestione. Le sue funzionalita' sono in parte limitate, ma per alcuni tipi di utilizzo e' SQLite la scelta ottimale.
SQLite e' rilasciato come software in Public Domain,
quindi utilizzabile nel modo piu' ampio e senza alcuna limitazione.
Questo documento e' stato preparato con la versione 3.7
di SQLite ma e', mutatis mutandis, valido anche per le altre versioni.
Se vi e' bastato quanto sopra per capire tutto quello che vi serve potete passare agli esempi, altrimenti continuate a leggere...
SQLite e' un database relazionale, la sua sintassi SQL e' molto completa e standard, la sua qualita' e' elevatassima, e' disponibile praticamente su tutte le piattaforme, includere SQLite in un programma e' semplice e richiede poco codice, l'utilizzo e' completamente gratuito e libero, ... Non deve stupire che SQLite sia molto diffuso!
Includono un database SQLite tutte le installazioni di
Firefox, di Skype, i web server con il PHP, i sistemi Solaris 10, i MAC, ...
Ma anche tutti gli iPhone, gli smartphone Android, i piu' recenti cellulari con Symbian,
molti altri modelli di cellulari, i piu' evoluti modelli di lettori MP3 e moltissimi apparati elettronici, ...
Facendo le somme gli sviluppatori di SQLite ritengono che il numero
di installazioni superi i 500 milioni: un numero di gran lunga
superiore a qualsiasi altro database.
SQLite
e' il database relazionale piu' installato nel mondo, anche se pochi lo sanno!
Se SQLite e' utilizzato in un programma allora non e' necessaria alcuna installazione. Ma se invece volte utilizzarlo direttamente da linea di comando e' necessario installarlo.
Se avete un sistema Linux facilmente SQLite e' gia' presente. Comunque l'installazione con yum o apt-get e' semplicissima! Ad esempio:
Fatto!
E' stata installata la libreria di SQLite ed il programma sqlite3
per l'utilizzo interattivo. Non serve altro...
Tipicamente SQLite e' utilizzato da programmi che lo richiamano per memorizzare i propri dati su una base dati relazionale. A volte pero' e' utile utilizzare il client per controllare da linea di comando il contenuto di una base dati. L'utilizzo del client sqlite3, come visto nell'esempio iniziale, e' banale e richiede solo una conoscenza basilare dell'SQL. Oltre ai comandi standard SQL, terminati sempre con un punto e virgola, vi sono alcuni comandi specifici di sqlite3 identificati da un punto iniziale. Ecco i piu' utilizzati:
.bail ON|OFF Interrompe a fronte di un errore .databases Mostra le informazioni sul database .echo ON|OFF Visualizzazione comandi .exit Termina il programma .header ON|OFF Visualizzazione nomi colonne .help Help .output FILENAME Invia l'output su FILENAME .quit Termina il programma .schema ?TABLE? Mostra la struttura della tabella (o di tutte) .tables ?PATTERN? Elenca le tabelle che contengono il PATTERN (o tutte)
L'SQL utilizzato da SQLite e' simile all'SQL di altri RDBMS, sul sito ufficiale si trova l'elenco completo dei comandi SQL. Nella select sono molto comode le subquery e le clausole di LIMIT ed OFFSET. Ecco un esempio:
Qualche esempio di query, utilizzando i database dei piu' diffusi programmi che
sfruttano SQLite, si trova in questo documento...
Oltre ai comandi SQL e' possibile definire alcuni parametri interni mediante il comando
pragma (eg. pragma auto_vacuum=1),
ma e' veramente raro doverlo utilizzare.
Se si vuole utilizzare un'interfaccia grafica sono disponibili molti client tra cui un ottimo SQLite Database Browser (download) ed il Plug-in Firefox SQLite Manager.
SQLite fornisce una base dati SQL utilizzabile dalle applicazioni.
SQLite e' semplicemente una libreria.
I sorgenti si scaricano dal sito ufficiale.
Si tratta principalmente di un file in linguaggio C di 130K righe che puo' essere compilato
con i semplici passi configure e make.
Il risultato della compilazione e' il client sqlite3 ed una libreria.
Basta includere la libreria nel link ed un qualsiasi programma
puo' utilizzare le funzioni di SQLite (sono presenti le API per
principali linguaggi di programmazione).
La libreria richiede pochi KB. E' tuttavia possibile diminuirne
ulteriormente la dimensione ed ottimizzarlo si dispositivi
con limitate caratteristiche HW.
E' disponibile un comando (sqlite3 o sqlite3.exe)
che consente di lanciare interattivamente i comandi SQL.
SQLite non utilizza alcun processo, thread, segmento di memoria, ...
La struttura dati e' costituita da un solo file.
Il file ha un formato fisso ed e' identico
su tutte le piattaforme (eg. Big/Little Endian, 32/64 bit).
Il database puo' essere spostato tra sistemi diversi con
una semplice copia.
Naturalmente possono essere utilizzati piu' file, ma ciascuno
sara' un DB diverso... ad esempio non potranno essere messe
in join tabelle provenienti da DB diversi.
Processi/programmi diversi possono accedere allo stesso DB.
Il lock in scrittura e' a livello del file, quindi dell'intero DB.
Quando un programma/processo
effettua una modifica nessun altro puo' leggere i dati.
SQLite e' molto robusto e soddisfa le caratteristiche ACID.
Il dizionario dati e' costituito da una sola tabella:
sqlite_master.
Con una semplice select si possono determinare tutti gli oggetti presenti
nel DB: tabelle, indici, viste, ...
I dati vengono memorizzati su 5 differenti storage class:
SQLite e' SQL standard ANSI 92, con poche limitazioni e differenze
rispetto allo standard. Le differenze sono dovute soprattutto all'utilizzo
di SQLite che e' prevalentemente
effettuato da programmi che lo includono in modalita' embedded.
Rispetto a quanto previsto dallo standard non esistono gli statement di
GRANT/REVOKE. La gestione della sicurezza e' infatti basata sui permessi del
file che contiene il DB.
Se il file di database e' leggibile si puo' eseguire qualunque query, se il
file e' scrivibile
si puo' effettuare anche qualunque operazione di DML (modifica).
In SQLite non sono implementate Stored Procedure (ma sono opzionali per l'SQL ANSI 92).
Dall'architettura dovrebbero essere ben chiari i limiti e le caratteristiche di SQLite... In nessun modo SQLite e' un'alternativa ad Oracle, a PostgreSQL, a MySQL, ... Le funzionalita' di un database Enterprise in termini di gestione della concorrenza, dell'accesso in client/server, ... non hanno un corrispondente in SQLite. Pero' nel caso di un programma che necessita gestire i propri dati, SQLite offre molti vantaggi rispetto alla semplice memorizzazione su file.
Ecco un semplice programma di esempio in C (lanciare con sqlitetest db comando):
#include <stdio.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **Col){ int i; for(i=0; i<argc; i++){ printf("%s = %s\n", Col[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char **argv){ sqlite3 *db; char *Err = 0; sqlite3_open(argv[1], &db); sqlite3_exec(db, argv[2], callback, 0, &Err); sqlite3_close(db); return 0; }Il programma e' ridotto poiche' non gestisce il controllo dei parametri, gli errori... Ma e' comunque indicativo, i passi sono: apri il DB, lancia uno statement SQL, chiudi. E questo e' sufficiente anche nel caso, piu' complesso, di una SELECT che richiede un callback per la gestione dinamica dei risultati.
Naturalmente la documentazione completa si trova sul sito ufficiale SQLite.
Titolo: SQLite
Livello: Medio
Data:
1 Novembre 2011
Versione: 1.0.6 - 14 Febbraio 2013 ❤️ San Valentino
Autore: mail [AT] meo.bogliolo.name