Synchronisation
La base de données peut être utilisée sur plusieurs appareils non connectées puis synchronisée quand une connexion est disponible.
Réplica
Les différentes copies de la BDD deviennent différentes dés la 1ère modification sur un des appareils. Ce ne sont donc plus des copies mais des réplicas ayant chacun subi des modifications, ajouts et suppressions de données.
Dossier de synchronisation
Les réplicats peuvent propager leurs modifications, ajouts et suppressions de données aux autres réplicats, via un dossier de synchronisation qui peut être :
- Une URL pointant vers un dossier sur un serveur FTPS.
- Un dossier sur le réseau local ou sur une clé USB.
FADAcore ne fourni pas de dossier de synchronisation. C'est à toi d'en fournir un et de l'indiquer dans le paramétrage de la synchronisation.
Clé de synchronisation
Un champ fulid ( Fada Unique Line Identifier) est ajouté à toutes les tables des applications FADA.
Ce champ contient un identifiant unique généré aléatoirement (64 bits). Ce champ n'est pas modifiable et permet de rapprocher les lignes de différents réplicas, même si leur clé primaire a été modifiée sur certaines répliques.
Risque d'erreur
Le fulid est toujours utilisé avec le nom de table. Pour une table de 1 million de lignes (y compris les lignes supprimées) le risque d'avoir 2 identifiants uniques est de 1 chance sur 37 millions.
Fonctionnement
Lors d'une synchronisation toutes les tables sont comparées, ligne par ligne et champ par champ. Si une valeur est différente sur les 2 réplicas les règles de synchronisation permettent de déterminer qu'elle doit être la valeur consservée.
La règle par défaut est Newer : la valeur la plus récente gagne.
Exemple




Appareil A : ajout d'une ligne et modification d'un champ.
Appareil B : suppression d'une ligne.

Règles de synchronisation
Chaque champ (colonne) à sa propre règle de synchronisation, définie par l'application FADA. Les règles ne sont pas modifiables par l'utilisateurice de l'application.
La règle applicable à un champ s'affiche dans l'infobulle du titre de colonne.
Modification et suppression concurrentes


La ligne supprimée par B est recréé par A avec sa modification, peu importe l'ordre des synchronisations (A avant ou après B).

La ligne supprimée par B est aussi supprimée chez A.