Un NERD da zero /

Realm Mobile Database

Realm Mobile Database

16 Settembre 2017 Marco Baldazzi
Marco Baldazzi
Marco Baldazzi
share
Realm Mobile Database

 

Oggi vi parlo di un argomento molto in voga negli ultimi anni tra gli sviluppatori di applicazioni mobile: Realm Mobile Datase.

Realm è una piattaforma che offre, tra le altre cose, la possibilità di implementare in maniera intuitiva, rapida ed efficiente, un database locale all'interno della nostra applicazione mobile. Inutile soffermarsi sul fatto che l'esigenza di un database è, al giorno d'oggi, essenziale e non ci si pone più nemmeno il problema sul fatto che debba essere implementato o meno; la quantità di dati che le applicazioni devono gestire è sempre maggiore e l'esigenza di salvare i dati ricevuti in locale sul dispositivo è sempre presente.

Gli aspetti principali di Realm che analizzeremo saranno:

  • Creazione del Database

  • Creazione dei Model

  • Insert, Update e Delete di uno o più Record

  • Query

  • Notifications

realm_1.png

 

CREAZIONE DEL DATABASE

La creazione del database tramite Realm è un’operazione quasi banale. Se siete abituati alle laboriose procedure di creazione di un database nativo sulle piattaforme iOS o Android (e altre piattaforme), questa procedura vi risulterà assolutamente facile e ve ne innamorerete subito. Dovete solamente importare Realm nel vostro progetto tramite Gradle o CocoaPods e nient'altro, il database verrà successivamente creato alla prima operazione che verrà effettuata sul Database.

 

CREAZIONE DEI MODEL

La creazione di un Model, che equivale anche al template della relativa tabella, è anch’essa semplicissima, infatti non ci basterà far altro che definire la classe o l’oggetto con il nome che vogliamo dare alla nostra entità ed i suoi relativi campi o proprietà. Con Realm non è più necessario definire la scheda della tabella per ogni entità presente nel database, questo perché Realm non è un database SQL ma opera utilizzando le istanze di ogni oggetto creato. In pratica ciò che sarà inserito, aggiornato o eliminato nel database sarà l'istanza di un oggetto precedentemente istanziato. Questa gestione delle cose semplifica molto il lavoro di noi sviluppatori poiché non è necessario definire il template di un'entità due volte, a livello di oggetto e a livello di tabella nel database, ma basterà farlo una sola volta.

 

INSERT, UPDATE e DELETE

Le basilari operazioni di inserimento, update e delete, sono altrettanto facili come le altre operazioni in Realm. Il concetto è molto semplice: tramite la creazione di un'istanza di Realm si eseguono le operazioni desiderate in maniera protetta e thread-safe, infatti Realm permette di eseguire qualsiasi tipo di operazione esclusivamente con lo stesso thread con cui è stata ricavata l'istanza dell'oggetto utilizzato, in questo modo si prevengono casi di concorrenza e inconsistenza dei dati e si ha una gestione molto semplificata del nostro database. Realm permette di inserire intere liste di oggetti rendendo veramente molto performante questa operazione, e permette inoltre di poter eseguire il tutto in maniera asincrona per non andare ad intaccare le performance e la reattività, lato utente, della nostra applicazione mentre i dati vengono salvati.

 

QUERY

Un altro aspetto molto smart e veramente ottimizzato di Realm è la semplicità con cui le query più comuni possono essere eseguite. Le principali query, quali ordinamento o filtraggio dei risultati, possono essere fatte direttamente sulla lista di elementi ritornati dal database tramite metodi messi a disposizione dall'SDK rendendo il tutto veramente agevole e molto performante. Realm è infatti conosciuto proprio per le sue prestazioni rispetto ad un database SQL, mette inoltre a disposizione dello sviluppatore una grande quantità di utility già progettate ed ottimizzate facendo in modo che non si debba reinventare la ruota. Ad ogni modo Realm permette di poter scrivere query manualmente come si fa in un classico database SQL.

 

NOTIFICATIONS

Questa è sicuramente una delle funzionalità che più apprezzo di Realm. Le notifications sono uno strumento di cui qualsiasi sviluppatore si innamorerà dopo averle utilizzate. Quante volte capita di dover scrivere il codice della nostra applicazione in modo che l'interfaccia grafica sia reattiva al cambiamento dei dati che essa deve mostrare? Bene, le notifications svolgono proprio questa funzione, ovvero creare una sorta di comunicazione tra il database, i dati e l'interfaccia grafica della nostra app facendo in modo che a quest'ultima venga notificato il cambiamento di uno o più tipi di dato salvati nel nostro dabase, per poter essere aggiornata in maniera istantanea e reattiva, migliorando notevolmente l'esperienza utente. In pratica una notification non è altro che un oggetto che rimane in ascolto dei cambiamenti che avvengono sui dati ai quali viene assegnata e, tramite un meccanismo di callback, permette allo sviluppatore di impostare un'azione ogni qualvolta venga notificata una modifica, che può essere una insert, update o delete di uno o più elementi, ai dati osservati. In questo modo la nostra interfaccia grafica si presenterà all'utilizzatore con i dati sempre aggiornati.

 

CONSIDERAZIONI

Realm possiede tante altre funzionalità che non ho menzionato poiché molto spesso marginali, ma comunque di grandissima importanza ed utilità per uno sviluppatore mobile. Ad esempio la gestione del database in multithreading, la connessione ad un database remoto, l'aggiornamento di versione del database (anche questo reso veramente semplice rispetto ai database mobile standard) e la crittografia dei dati.

Ci tengo a precisare che questo articolo non vuole certo essere una guida completa all'utilizzo di Realm, poiché le sue funzionalità sono molteplici e per la descrizione completa esiste già un'ottima guida ufficiale ( https://realm.io/products/realm-mobile-database/ ) che non lascia spazio a tanti dubbi. Lo scopo di questo articolo è in primo luogo rendere coscienti dell'esistenza di questo stupendo gestore di database mobile e delle sue potenzialità per lo sviluppo di applicazioni, con un particolare occhio alle performance e alla reattività, rendendo la vita dello sviluppatore più facile e allo stesso tempo, permettere a quest'ultimo di fare un passo avanti nella lunga strada dell'esperienza e dell'apprendimento di nuove metodiche e tecnologie per lo sviluppo.

comments powered by Disqus

Sei alla ricerca di uno sviluppatore?

Cerca nel nostro database


Stefano Galizia

Sviluppatore iPhone ed Android

Vai al profilo

Roma4You

Roma4You è un progetto trasversale unico nel suo genere, contraddistinto da...

Vai al profilo

Techmobile

Vai al profilo

FW LAB AC

Sviluppatore Italiano specializzato nello sviluppo di software per dispositivi...

Vai al profilo