Fondamenti della sincronizzazione

La sincronizzazione è quel processo di scambio dati tra il server centrale e i programmi. In pratica permette di aggiornare e rendere omogenei i dati dello stesso database su tutti i dispositivi dell’utente.

Quando l’utente inserisce sul telefono un nuovo contatto, questo viene salvato all’interno del database locale.
In fase di sincronizzazione il telefono informa il server centrale di un nuovo dato e il server controlla se è già presente oppure no. Se non è presente, il telefono lo invia per essere salvato. In caso il dato sia stato modificato, viene fatto un confronto tra i valori presenti sul telefono e quelli sul server: se quelli sul telefono sono più recenti verranno inviati al server, invece, nel caso in cui i dati sul server siano i più recenti, il telefono procederà a scaricarli sovrascrivendo quelli presenti nel suo database locale.

Questo confronto delle informazioni è possibile grazie a due campi presenti all’interno di ogni tabella del database.

Il primo è un campo di testo chiamato GGUID. Questo campo contiene una chiave unica e globale generata dal dispositivo al momento della creazione di un nuovo dato. Vista la complessità e la lunghezza della chiave, risulta praticamente impossibile che due dispositivi generino due chiavi identiche all’interno dello stesso database.

Il secondo campo è un valore numerico chiamato TID. Questo valore rappresenta la data e l’ora di quando il dato è stato creato o modificato per l’ultima volta. Il valore viene letto usando l’ora del dispositivo.

Riprendendo l’esempio precedente, il programma, partendo dall’ultima data e ora di sincronizzazione, estrae i dati che sono stati creati, modificati o cancellati. Invia al server l’elenco dei GGUID e i suoi rispettivi TID per ogni dato. Il server controlla se possiede questi GGUID: se non sono presenti scrive i nuovi dati, se invece sono presenti controlla i TID dei dati ricevuti rispetto a quelli presenti in esso. In base al confronto decide se sovrascrivere i suoi o se informare il dispositivo di sovrascrivere quelli presenti all’interno del suo database locale.

Questo procedimento è valido sia per le tabelle di gestione del sistema che per le tabelle dell’utente, ma anche per file e immagini.

Visto che la sincronizzazione si basa sul confronto delle date di creazione e modifica, è essenziale che i dispositivi abbiano le date il più possibile identiche.