Database Embedded: una panoramica

19 maggio 2017

Molto spesso i progettisti software si trovano a dovere decidere quale tipologia di database sia più consona per la loro applicazione. In questo articolo spiegheremo cosa si intende per database embedded e in che situazioni conviene usarli per costruire una architettura software adatta alle nostre necessità e soprattutto, alle nostre risorse computazionali e di spazio.

I database embedded sono tutti quei database integrati in un ambiente che dispone di risorse computazionali e di memorizzazione limitate. Un esempio semplice è rappresentato da tutte quelle applicazioni atte a girare su dispositivi mobile o in ambienti IoT. I database embedded sono quindi quei database che per loro natura non necessitano di un server remoto per essere gestiti e che, per tale motivo, possono essere adottati anche quando le risorse sono limitate. Le applicazioni che adottano i database embedded risultano essere più veloci e con più risorse a disposizione rispetto a quelle che utilizzano dei database basati su server remoti. Questo perché, essendo il database gestito localmente (spesso su file), tutti i processi di comunicazione tra l’applicazione e il database vengono gestiti quasi immediatamente.

Se le performance sono molto importanti per la nostra applicazione, allora è strettamente consigliabile adoperare un database di questo tipo.

I database embedded, quindi, sono usati in tutte quelle situazioni dove non è possibile scambiare dei dati con un server remoto (tramite la rete) e quando la vostra applicazione deve girare in un’unica istanza per l’utente; ovvero non è richiesta la sincronizzazione dei dati da parte di un server. Questi database permettono una sola scrittura alla volta e non risultano usabili se la vostra applicazione ha più istanze di esecuzione. In poche parole, non possono leggere e scrivere dati in parallelo.

Come per i database ordinari, anche con quelli embedded abbiamo di una suddivisione tra database relazionali e non relazionali. In questa panoramica ne vedremo alcuni di entrambe le categorie, in modo da fornire al lettore una buona base di conoscenza iniziale.

Database Embedded Relazionali

I database embedded relazionali sono certamente in maggior numero rispetto a quelli non relazionali. Vediamone subito alcuni:

Nome e LinkDescrizione
SQLiteSQLite è una libreria software scritta in linguaggio C che implementa un DBMS SQL incorporabile all’interno di applicazioni. Permette di creare una base di dati (comprese tabelle, query, form, report) interamente racchiusa in un unico file.
MySQL EmbeddedMySQL Embedded fornisce la maggior parte delle caratteristiche di un normale database MySQL adottando l’approccio embedded.
Microsoft SQL Server CompactMicrosoft SQL Server Compact è un database utilizzabile per compilare siti Web ASP.NET e applicazioni desktop per Windows.
Firebird EmbeddedFirebird Embedded include un client ed un server in un’unica DLL per semplicità di distribuzione. Risulta molto pratico, ma privo di molti dei sistemi di protezione usuali di Firebird.
H2 Database EngineH2 è un gestore di basi di dati relazionale scritto in linguaggio Java con tecnologia in memory. Può essere incapsulato in applicazioni Java o eseguito in modalità client-server.

Tra gli embedded database relazionali più comuni, e probabilmente di più facile utilizzo, non possiamo fare a meno di porre l’attenzione su SQLite. Vediamo brevemente come usare SQLite. Dal link sopra citato, e supponendo di lavorare in ambiente Windows, scarichiamo l’sqlite-tools, sotto la categoria Precompiled Binaries for Windows. Dentro l’archivio .zip scaricato, troveremo un file eseguibile (sqlite3.exe) che potremo avviare da riga di comando mediante il prompt di Windows.

Rechiamoci nella cartella dove abbiamo salvato l’eseguibile sopra citato, ed eseguiamolo da riga di comando.

cd c:\sqlite
sqlite3.exe

Da questo momento in poi potremmo lanciare comandi SQL per creare, leggere o modificare tabelle e dati.

Esiste anche uno strumento alternativo dotato di interfaccia grafica, SQLite Studio, anch’esso scaricabile gratuitamente dal relativo sito ufficiale. Oltre ad essere molto più intuitivo, esso permette di muoversi molto più velocemente nell’esecuzione dei vari comandi SQL.

Database Emdedded Non Relazionali (NoSQL)

I database embedded non relazionali (anche detti NoSQL) sono meno diffusi dei precedenti, ma in molte situazioni possono risultare più adatti (si veda a tal proposito la guida alla progettazione dei database NoSQL, disponibile su HTML.it). Di seguito elenchiamo alcune soluzioni embedded NoSQL:

Nome e LinkDescrizione
unQLiteunQLite è un database embedded NoSQL, che supporta i modelli Key/Value e a documenti.
Couchbase MobileCouchbase Mobile è un database embedded NoSQL, anch’esso basato sui modelli Key/Value e a documenti, capace di gestire velocemente e in tutta sicurezza dati per applicazioni IoT o Web.
Berkeley DBBerkeley DB (BDB) è un database embedded NoSQL Key/Value e a documenti, che tramite licenza open source può essere utilizzato sulla maggior parte dei sistemi operativi, inclusi sistemi embedded Linux, Linux, macOS, QNX, UNIX, VxWorks e Windows.

Tra le soluzioni NoSQL sopra elencate, unQLite ci è sembrato un buon compromesso per iniziare a lavorare con i database embedded di questa cateogoria. Per potere gestire con facilità questo database tramite un ambiente dotato di interfaccia grafica, consigliamo di scaricare FastoNoSQL, uno strumento che permette la gestione anche di altri database NoSQL (come ad esempio Redis, Memcached, SSDB, LevelDB, RocksDB, LMDB, UpscaleDB).

Per creare un database con FastoNoSQL, basta cliccare su Add Connection, scegliere il database (in questo caso unQLite) e aprire la connessione, tramite la quale potremo gestire localmente il database.

Per aggiungere un dato, possiamo cliccare con il tasto destro su default -> Create Key, e scegliere il tipo di dato da salvare dall’apposito menu a tendina, fornendo una Key (un identificativo per riconoscere il nostro dato) e un Value (ovvero il dato).

Con lo stesso procedimento possiamo inserire molti altri dati e successivamente prelevarli per usarli.

Se vuoi aggiornamenti su Database Embedded: una panoramica inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Database Embedded: una panoramica

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy