• Non ci sono risultati.

Gestione dei database

2.1.2

Android SDK

Eclipse con ADT

L’SDK di Android fornisce una ricca serie di tools: debugger, librerie, emulatori, documentazione, codice di esempio e tutorials. Le applicazio- ni Android possono essere sviluppate utilizzando Eclipse tramite l’aggiunta di un plu-in chiamato Android development Tools (ADT). L’appoggiarsi a Eclipse permette quindi di utilizzarne tutte le caratteristiche pi`u utili, come content assit, ricerca, possibilit`a di utilizzare plug-in ulteriori, integrazione con JUnit, utilizzo di Javadoc, e diverse altre. Si vuole quindi sfruttare un IDE consolidato e potente come Eclipse come base a cui aggiungere le caratteristiche tipiche dello sviluppo mobile per Android.

2.2

Gestione dei database

2.2.1

SQLite

SQlite `e una libreria che implementa un motore SQL transazionale server- less, autonomo e che necessita di poca configurazione. Il codice `e di pubblico dominio ed utilizzabile gratuitamente sia a livello privato che commerciale [17].

Differentemente dai classici database SQL, SQLite non ha un processo server separato, legge e scrive direttamente su normali file disco. Un intero Database con tabelle, indici, triggers e viste `e contenuto in un singolo file che ha il vantaggio di essere cross-plaform e utilizzabile indipendentemen- te dall’archietttura. Queste caratteristiche fanno di SQLite non tanto una alternativa ai principali DBMS come Oracle ma bens`ı una valida soluzione come formato-file per il salvataggio dei dati da parte di applicazioni.

I vantaggi di questa scelta sono molteplici:

1. Vengono automatizzate le funzioni di scrittura e lettura dei dati, evi- tando al programmatore di dover scrivere funzioni di debug e controllo.

2. L’accesso ai dati viene fatto tramite query SQL che semplificano quindi la complessit`a del codice per eseguire queste operazioni.

3. Il sistema `e estendibile e modificabile non dando quindi vincoli sulla manipolazione dei dati.

4. Si utilizza un solo file per racchiudere informazioni di diversa natura che altrimenti sarebbero state conservate ognuna in un file differente.

5. I dati sono indipendenti dal livello software che li ha salvati e possono quindi essere letti, modificati e utilizzati da diversi applicativi indipen- denti fra loro e senza necessit`a di conoscere le caratteristiche del codice che ha generato i dati.

6. Vengono caricati in memoria solo i dati necessari, ottimizzando la trasmissione dei dati e i tempi di lettura e di scrittura.

7. Vengono risolti automaticamente problematiche di accesso concorren- ziale ai dati, diversi applicativi possono accedere contemporaneamen- te alla stessa fonte dati che si occupera autonomamente di gestire la concorrenza e garantire le propriet`a A.C.I.D. e la consistenza dei dati.

8. Si hanno a disposizione le classiche feature dei DBMS relazionali come processi di undo/redo cross-sesssion ottenuti utilizzando i triggers.

SQLite si definisce Self-Contained : richiede minimo supporto da librerie esterne e dal sistema operativo. Questo lo rende ottimizzato per dispositivi portatili e che non hanno i vantaggi delle infrastrutture dei computer desktop e per le applicazioni che necessitano di esser eseguite su diverse macchine con configurazioni diverse, senza che queste ultime debbano essere modificate appositamente.

SQLite `e scritto in ANSI-C ed `e quindi facilmente compilabile da ogni compilatore C standard. Utilizza appena 7 funzioni C ( memset(), memcpy(), memcmp(), strcmp(), malloc(), free(), realloc()). L’utilizzo della malloc() `e inoltre sosti-

2.2 Gestione dei database 31

`e inoltre il supporto a funzioni di date-and-time fornite da librerie C sup- plementari ma queste possono essere omesse in fase di compilazione se non necessarie. SQLite pu`o essere eseguito in multi-threading e sfrutta le librerie mutex per garantire il corretto funzionamento relazionale e transazionale del database.

La dimensione della libreria con tutte le funzionalit`a abilitate pu`o arrivare ad essere inferiore a 0,5Mb (a seconda della piattaforma e delle ottimizzazioni del compilatore). Sono ridottissimi anche i requisiti di stack-space (4Kb) e di heap-space (100Kb), rendendo SQLite un ottimo motore relazionale per database per dispositivi con poca memoria come gli smartphone, ottenendo uno dei migliori rapporti prestazioni/risorse in questi scenari d’uso.

La comunicazione fra SQLite, il sistema operativo e il livello di memo- rizzazione dei dati avviene tramite un layer VFS (Virtual File System) che potr`a quindi essere ottimizzato per dispositivi portatili. Risulta solido anche il rispetto delle propriet`a A.C.I.D, che vengono rispettate in ogni transazio- ne anche in caso di crash di sistema o interruzione dell’alimentazione del dispositivo.

2.2.2

PhpMyAdmin

phpMyAdmin `e un tool scritto in PHP, rilasciato gratuitamente su licen- za open source, che si occupa dell’amministrazione di un database MySQL tramite interfaccia web[18]. ´E in grado di eseguire tutti i tipi di operazio- ni necessarie alla creazione, gestione e amministrazione di una base di dati, partendo dalla definizione e gestione dello schema fino all’esecuzione di query SQL e gestione di utenti e permessi

Fra le principali funzionalit`a offerte troviamo:

• Gestione tramite interfaccia web, con tutti i vantaggi che ne derivano come indipendenza dal sistema operativo e dal software utilizzato.

• Gestione di database MySQL.

• Esportazione di dati in numerosi formati fra cui: .CSV, .SQL, .XML, .PDF, ISO/IEC26300 - OpenDocument, Microsoft Word e Excel, LATEX.

• Creazione di grafici in pdf del layout del database.

• Wizard per la creazione di queries complesse utilizzando Query-by- Example (QBE).

• Ricerca all’interno di un database.

• Grafici in tempo reale per il monitoraggio delle attivit`a di un server MySQL come connessioni, processi, utilizzo delle risorse.

Utilizzo nel progetto Il tool phpMyAdmin `e stato utilizzato per la crea- zione e gestione del database del CMS Esercizi2013 su un server locale uti- lizzato a scopo di testing e sviluppo. ´E stato caricato un dump del server di produzione e utilizzato quest’ultimo per definire le query utilizzate nel- le diverse chiamate http-post effettuate dalla applicazione Android verso il servizio PHP.

Documenti correlati