Continious Synchronization of Conflict-Free Replicated Relations
Permanent lenke
https://hdl.handle.net/10037/25930Dato
2022-05-12Type
Master thesisMastergradsoppgave
Forfatter
Iversen, Gustav HeideSammendrag
Local-first software is an attempt to use the benefits of cloud service while reducing its drawbacks. Local-first software gives the clients ownership and control of their data and makes the service always available. It is achieved by having the primary copy of the service at the client. The most common way to implement local-first software is by utilizing Conflict-free Replicated Datatypes or CRDTs, which are conflict-free by design. Conflict-free Replicated Relations or CRR are CRDT applied to SQL databases. CRR systems require some form of communication middleware to propagate its state so that each site can converge to a common state. Earlier CRR systems have used SSH File Transfer Protocol to propagate states or SFTP, which means writing to disk many times.
This thesis focuses mainly on the communication portion of a CRR system applied to an SQLite database called SynQLite. SynQLite is a service that can augment an SQLite database with CRR-support. It also includes the possibility to clone and synchronize with remote sites.
The previous version of SynQLite allowed only to pull states from a remote site. We propose a solution where users can synchronize continuously with more than two sites simultaneously. The solution involves creating a centralized leader that other sites can connect to with TCP connections, and the other sites synchronize with the leader.
The thesis includes an evaluation process including many experiments. These experiments are used to evaluate how well SynQLite supports local-first properties. This includes testing how SynQLite affects the offline database and how well SynQLite supports synchronizing sites.
Forlag
UiT Norges arktiske universitetUiT The Arctic University of Norway
Metadata
Vis full innførselSamlinger
Copyright 2022 The Author(s)
Følgende lisensfil er knyttet til denne innførselen: