Synql: Replicated Relations and Integrity Maintenance
Synql : Relations Répliquées et Maintenance d'Intégrité
Résumé
Many offline-first applications use an embedded relational database, such as SQLite, to manage their data. The replication of the database eases the addition of collaborative features to its applications. Most of the approaches for replicating a relational database require coordination at some extent. A few approaches propose a coordination-less replication to allow offline work. These approaches are limited in two ways: (i) They don't respect Strong Eventual Consistency that states that two replicas converge as soon as they integrate the same set of modifications; (ii) They fail to preserve user intent in complex scenarios. We propose a new CRDT that addresses these two limitations. Our replicated state is defined by the composition of CRDT primitives. The state of the database is computed over the replicated state. The user modifications are compensated so that the computed state corresponds to what the users saw and changed.
De nombreuses applications locales utilisent une base de données relationnelles embarquée, telles que SQLite, pour gérer leurs données. La réplication de la base de données facilite l'ajout de fonctionnalités de collaboration. La plupart des approches pour répliquer une base de données relationnelles exigent de la coordination. Quelques approches proposent une réplication sans coordination qui permet le travail hors-ligne. Ces dernières sont limitées sur deux points : (i) Elles ne respectent pas la Cohérence Causale Forte qui stipule que deux répliques convergent dès lors qu'elles ont appliqué le même ensemble de modifications ; (ii) Elles ne réussissent pas à assurer l'intention des clients dans des scénarios complexes. Nous proposons un nouveau CRDT qui lèvent ces deux limitations. Notre état répliqué est défini par une composition de primitives CRDTs. L'état de la base de données est dérivé de l'état répliqué. Les modifications des clients sont compensées de manière que l'état dérivé correspond à ce que le client a vu et changé.
Domaines
Informatique [cs]Origine | Fichiers produits par l'(les) auteur(s) |
---|---|
Licence |