SQLite (http://www.sqlite.org/) è un database relazionale che sta all'interno delle applicazioni e permette di fare tutto ciò che solitamente richiederebbe una database tradizionale diviso in client e server (leggere MySQL, PostgreeSQL).
Per ora ho provato l'integrazione solo con due linguaggi, C++/Qt4 e Java.
In entrambi i casi i risultati sono stati ottimi e l'integrazione è stata rapidissima.
QT4
Qt4 mette a disposizione una libreria per interagire con il db. Ecco uno stralcio di codice che permette di misurare il tempo di esecuzione di due semplici query.
int main(int argc, char *argv[])
{
QTime t;
t.start();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("qt.db");
db.open();
QSqlQuery * query = new QSqlQuery("insert into T1 values (1,'Insert from program.');",db);
int result = 1;
result = (query->exec()) ? 0 : -1;
query->prepare("SELECT * FROM T1;");
query->exec();
while(query->next())
{
QString line = query->value(0).toString() + ","+query->value(1).toString();
QString deb = "Linea trovata: " + line;
qDebug(deb.toStdString().c_str());
}
int elapsed = t.elapsed();
return elapsed;
}
Facendo girare il programma sul mio laptop il tempo di esecuzione è stato di 3 millisecondi. Un ottimo risultato direi.
Java
Ecco un piccolo esempio di codice Java che fa la stessa cosa.
public static void main(String[] args) throws SQLException {
try {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("insert into T1 values (1,'Insert from program.');");
} catch (ClassNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
Con il la parte di codice scritta in Java non ho eseguito dei test di performance ma ha garantito una portabilità incredibile visto che il file .jar contiene al suo interno la libreria per interagire con il database.
Questo è solo un primo articolo che vuole fornire lo spunto a tutti quelli che verranno. Spero di essere stato utile.
Alla prossima.