13/06/2013

Persistenza: IOS Core Data    

SQLite ha rappresentato un elemento determinante nello sviluppo delle tecnologie mobile e web perchè ha permesso a queste ultime di beneficiare di un motore di database leggero, efficiente e soprattutto conforme agli standard SQL.

Scritto in linguaggio C, tecnicamente, SQLite è un motore database di tipo ACID, in grado cioè di rispettare le caratteristiche di Atomicità, Coerenza, Isolamento e Durabilità. Oltre alle sue caratteristiche tecniche, SQLLite deve la sua diffusione anche al metodo di distribuzione che il suo creatore, Richard Hipp, ha deciso di adottare.

L’approccio al suo utilizzo è lo stesso di un motore database classico come SQLServer, mysql etc.: definizione e creazione della struttura, creazione della connessione, creazione ed esecuzione dello statement sql, recupero del resultset e recupero dei dati.

La sua diffusione è stata trasversale su tutti i settori; infatti, le interfacce di comunicazione col database sono state introdotte nei più comuni linguaggi di programmazione web, mobile e stand alone, ma anche contemplate dalle specifiche HTML5. Android, IOS, Firefox, Safari, Chrome adottano tutti come motore di database nativo SQLlite.

Detto questo, resta sempre responsabilità dello sviluppatore la gestione della persistenza degli oggetti, predisponendo un apposito strato software dedicato all’interfacciamento con la base dati. Tale strato non dovrà solo occuparsi di gestire opportunamente i dati, ma dovrà riflettere anche le variazione della struttura dei dati.

Nell’ottica di superare tale “limite”, Apple ha realizzato il framework Core Data quale componente dedicato al “Model” del pattern MVC su cui si basa l’ambiente IOS. Core Data non si deve intedere né come un’interfaccia RDBMS ne come ORM, bensì come uno strumento di gestione della persistenza dei dati e della loro struttura basato su un modello grafico ad oggetti. In pratica Core Data si occupa, oltre che della persistenza, della gestione dei dati in memoria, del passaggio di versione e dell’undo.

Anche se il framework di gestione dati di IOS può salvare i dati in file binari, xml o in database sqllite, si tende a prediliggere quest’ultima soluzione per la caratteristiche sopra descritte.

L’intera struttura Core Data si basa su una gerarchia di classi che descrivono gli elementi coinvolti:

  • NSManagedObjectModel: descrive la struttura dei dati utilizzata dall’applicazione. Tale struttura è gestibile attraverso un apposito tool di definizione dell’ambiente di sviluppo XCode.
  • NSManagedObjectContext: rappresenta il contesto di esecuzione delle operazioni su database. All’interno di un contesto è possibile effettuare operazioni di salvataggio/modifica dei dati in un ambiente transazionale.
  • NSPersistentStoreCoordinator: è la classe che contiene i riferimenti al database utilizzato dall’app ed è utilizzato dal contesto per registrare materialmente i cambiamenti. NSFetchRequest: è la classe destinata alla gestione e delle ricerche nei dati. In modo simile, permette di definire le interrogazioni per il recupero dei dati in base alle definizioni delle entità definite nel modello (NSManagedObjectModel).
  • NSEntityDescription: è utilizzata per definire l’Entità per la Fetch Request.
  • NSPredicate: in agginuta alla request, consente la definizione dei criteri di recupero dei dati.
  • NSManagedObject: rappresenta un’Entità sulla quale si intende operare attraverso il Key-Value Coding.

Autore:
Vincenzo Tirelli
Vincenzo Tirelli

Tags: Applicazioni, Database, Software, SQL


©2017  SNAP s.r.l. Via Cap. Luca Mazzella, 40-44 82100 Benevento

Telefono +39 0824 21080 - Fax 0824 1810300 - Partita Iva 01066160621

Contatti | Utilizzo | Privacy | Ricerca | Seguici su Facebook | | LinkedIn