Pagine

giovedì 30 dicembre 2010

SQLite, libreria SQL in 200kb

Premessa

Qualche tempo fa, sempre su questo blog, ho scritto un articolo sui sistemi di database.
Tra i software citati, nel paragrafo denominato "librerie di database" ho fatto riferimento a sqlite.
L'articolo di oggi vuole approfondire la conoscenza di questo eccellente sistema ed in particolare fare una veloce panoramica che possa far venir voglia di utilizzarlo.

Cosa è sqlite e quando usarlo

SQLite è una libreria che permette di gestire dei database anche molto corposi (fino a 2Tb circa!!!) con molti accessi contemporanei in lettura in maniera rapida.
Esso non necessita di alcuna installazione (basta scaricarlo e si può iniziare ad usarlo!!) e non avvia alcun servizio.
Nonostante questo, può essere utilizzato sia in ambiente Linux, Windows e Mac, gestisce le transazioni, l'utilizzo del linguaggio SQL, delle viste e dei triggers.

Nella prima pagina del sito di riferimento, la cosa che colpisce subito sono gli sponsor che spingono all'uso di questo sistema. Sono aziende del calibro di Oracle, Symbian, Mozilla, Bloomberg e Adobe!

La licenza è decisamente molto aperta e permette la libera copia, modifica, pubblicazione, utilizzo e rivendita sia del codice sia della compilazione per qualsiasi utilizzo commerciale o meno.

SQLite crea un file dal quale legge e scrive direttamente i dati senza creare thread separati gestendo le code in maniera estremamente efficiente.
Questo permette di creare un database su un singolo file, portarlo in giro con una chiavetta o spedirlo via posta ad un amico in spazi estremamente contenuti.
Le dimensioni della libreria, infatti, variano dai 100kb ai 300kb (a seconda del sistema) e la memorizzazione dei dati è davvero contenuta.

Per questi motivi SQLite è particolarmente utile nell'utilizzo all'interno di cellulari, lettori MP3 e sistemi embedded in generale. Si presta ad immagazzinare i dati per siti web, analisi di dati e gestione di demo o piccoli database personali o aziendali.
Al contrario non può essere utilizzato per database che richiedono alti carichi di lettura/scrittura, basi di dati superiori ai 2Tb (!!) o applicazioni che necessitano della tecnologia client/server.

Interfaccia per l'uso di SQLite

SQLite non è dotato nativamente di interfaccia grafica per la gestione dei dati.
Esso fornisce una shell interattiva stile prompt di MSDOS dove è possibile inserire i comandi SQL come in questo esempio o dei comandi propri per l'impaginazione dei dati.
Intorno a questo sistema, però, sono sorte moltissime interfacce di terze parti, alcune opensource, altre proprietarie.
In una pagina del sito di riferimento c'è una lista completa di software tra i quali si può scegliere.
Personalmente utilizzo SQLiteAdministrator e SQLiteManager anche se il mio preferito è un plugin per Firefox SQLite Manager AddOn.
Tutti questi software permettono di gestire i dati di sqlite in maniera grafica se proprio non ci si vuole cimentare con la shell ed il linguaggio SQL.

Api e linguaggi di programmazione

La cosa più impressionante di sqlite è la quantità di linguaggi di programmazione che mettono a disposizione la possibilità di gestire un database con questo sistema.
Python, C++, Java, php, perl, .NET sono solo alcuni di questi.
Si può trovare l'elenco completo in questa pagina: SQLite Wrappers.
Come se non bastasse, sqlite mette a disposizione una shell non interattiva.
Tramite il proprio eseguibile, ifnatti, è possibile lanciare dei comandi anche dal prompt di MSDOS o dalla shell di Linux che creano tabelle, database, inseriscono dati e quant'altro: tutto ciò rendeo questo sistema estremamente utile anche in piccoli script di sistema per il logging.

Conclusioni

Grazie alla sua estrema duttilità, alle sue dimensioni contenute, alla sua licenza permissiva ed ai linguaggi che ne permettono l'utilizzo, SQLite è il candidato ideale per lo sviluppo di molteplici progetti siano essi personali sia professionali.
Nei prossimi articoli copriremo diversi aspetti di questo software.
Per il momento non rimane che scaricarlo ed iniziare ad utilizzarlo!

Emozioni informatiche e Duke Nukem 3D

Quando ero giovine, alla tenera età di 16 anni anelavo senza limiti al motorino.
I miei genitori, come tutti i genitori che non hanno avuto esperienze con le due ruote, in risposta alle mie spasmodiche preghiere... mi regalarono il mio primo computer...

Iniziò allora la mia avventura nel mondo dell'informatica e a 17 anni fui iniziato da alcuni compagni di classe ai giochi per computer grazie a Duke Nukem 3D.
Era uno sparatutto emozionante ed all'avanguardia per l'epoca che mi incollò per ore ed ore davanti allo schermo sia di giorno sia di notte.

All'epoca non esistevano le console.
Non si parlava ancora della guerra tra Wii, PS, XBOX e non esistevano le portatili PSP e DS...
Era l'epoca dei PC ed io ero alle prese con il mio primo computer, un vecchio i386SX (senza coprocessore matematico) con un monitor da 14'' che emetteva più radiazioni di una centrale nucleare a pieno regime ed un modem esterno da 14.4Kb/s che si connetteva solo alle BBS ed era costato più dell'autoradio di mio padre.
Il sistema operativo era il DOS con la sua suddivisione della memoria RAM in memoria bassa ed alta e si affacciava il windows 3.0 con le sue icone allegramente scopiazzate dall'Amiga.

Su questo computer passai molte ore liete in compagnia di Duke Nukem 3D che mi permise, inconsapevolmente, di conoscere meglio il computer.
Duke Nukem girava in memoria bassa ma, tipicamente, il DOS utilizzava questo spazio per caricare una serie di programmi residenti in memoria utili alla gestione del PC.
Per questo motivo iniziai a studiare il sistema operativo, a conoscere i file di configurazione, a smanettare con l'help in linea e tutto per liberare la memoria bassa al fine di giocare...
In questo modo conobbi l'autoexec.bat ed il config.sys e tutto ciò mi incuriosì non poco.
Il passaggio successivo furono i primi passi verso il basic e gli script di configurazione automatica che mi permettevano il caricamento in fase di boot dei programmi a seconda dell'uso che dovevo fare del computer.

Successivamente insieme a due amici decidemmo di usare Duke Nukem per giocare in rete.
I computer non erano portatili e quindi si partiva da casa caricandosi a spalle il case, il monitor formato padellone e cavi ovunque.
Si organizzavano le serate/weekend a casa di uno o dell'altro partendo il sabato sera, tirando fino a tardi, e a volte si dormiva nella stessa casa per ripartire con la domenica ludica...

Router, cavi di rete, switch? All'epoca non ne conoscevamo l'esistenza o forse proprio non esistevano o probabilmente costavano troppo perchè potessimo prenderli in considerazione ed allora via di cavo seriale per connettere due PC tra di loro.
Ma solo due per volta ed il terzo, a rotazione, stava a guardare :-)
Ecco la nostra "rete".
La connessione, però, nonostante i computer fossero solo due per volta era lentissima e dopo nottate a cercar di capire quale potesse essere il problema (internet non c'era e noi avevamo 17 anni!!), scoprimmo che la seriale è intrinsecamente lenta per questo genere di giochi che necessitano lo scambio di molte informazioni al secondo.

Decidemmo quindi di passare alla porta parallela ed anche qui le serate passate insieme per far dialogare i computer non si contano...
Tra coca cola, riavvii, perplessità varie riuscimmo anche in questa impresa: e si parla di windows 3.0!!
L'emozione provata quando i due PC iniziarono a parlarsi è ancora viva dentro di me.

Uno dei due miei amici, però, aveva un 486DX (con coprocessore matematico), un mostro di un altro pianeta rispetto al mio povero i386SX che soffriva di potenza di calcolo quando doveva elaborare oltre alla grafica anche la connessione.
Un altro computer costava troppo (soprattutto all'epoca e dato il fatto che i soldi erano dei genitori e non miei...) ma ero intenzionato a giocare ad armi pari.
Per questo motivo iniziai a comprendere cosa fosse una scheda madre, un coprocessore matematico, la RAM e tutte ste cosette...
Ipotecando (presso i miei genitori) la paghetta dei successivi 6 mesi comprai, infine, un coprocessore e lo saldai sulla scheda madre insieme ad un amico perito (tra fioretti e preghiere rivolte a San Circuito che non mi facesse bruciare nulla....) e cambiai la memoria RAM aggiungendo un banco da 2Mb (!!!) duplicando la precedente RAM.

Finalmente ero operativo e le serate si fecero molto più animate tra urla di gioia quando si vinceva e i fischi quando si perdeva, tra appostamenti virtuali e battaglie all'ultimo sangue con pugnali, bazooka, mitragliette e armi speciali!

Se siete arrivati fino a qui a leggere, probabilmente vi starete chiedendo il motivo di questo post...
Tutti questi ricordi sono venuti fuori quando ho letto, in questi giorni del porting del gioco denominato Duke Nukem 3D su Linux...
Mi son tornate alla mente le ore passare a fare i miei primi abbozzi di hacking, le ore di gioco davanti al monitor, i giorni insieme agli amici a fare le scoperte nel mondo dell'informatica che mi hanno condotto a utilizzare questi strumenti nella vita di tutti i giorni e nel mio lavoro.

Insomma.... leggendo questo articolo mi sono tornate vecchie emozioni alla mente... emozioni informatiche incomprensibili e forse deprecabili da chi non ha vissuto le medesime esperienze ma pur sempre emozioni!