Confirmed users
471
edits
No edit summary |
|||
Line 1: | Line 1: | ||
= Delta-Based Data Synchronization = | |||
* Brian Warner, Chris Karlof, Feb-2013 | * Brian Warner, Chris Karlof, Feb-2013 | ||
Line 6: | Line 6: | ||
passwords, etc) between multiple devices, with end-to-end encryption. | passwords, etc) between multiple devices, with end-to-end encryption. | ||
== Problem Statement == | |||
The goal of PICL is to provide a unified browser experience across multiple | The goal of PICL is to provide a unified browser experience across multiple | ||
Line 52: | Line 52: | ||
* Gentle on the server: users with large datasets should not cause database timeouts. Pagination might help, or breaking the dataset into smaller pieces. | * Gentle on the server: users with large datasets should not cause database timeouts. Pagination might help, or breaking the dataset into smaller pieces. | ||
== Merge Strategies and Locations == | |||
We can take a lot of inspiration from Git. In the Git "central canonical | We can take a lot of inspiration from Git. In the Git "central canonical | ||
Line 90: | Line 90: | ||
== Overall Architecture == | |||
We assume that each datatype has a canonical "native store", where the | We assume that each datatype has a canonical "native store", where the | ||
Line 121: | Line 121: | ||
[[File:DeltaSync-versions.png|Versions]] | [[File:DeltaSync-versions.png|Versions]] | ||
== Server Holds Current Version, and Sometimes Deltas == | |||
For each collection, the server holds the signed version-ID for the current | For each collection, the server holds the signed version-ID for the current | ||
Line 148: | Line 148: | ||
[[File:DeltaSync-deltas.png|Deltas]] | [[File:DeltaSync-deltas.png|Deltas]] | ||
== Client Merging == | |||
The sync client cannot remain connected to the server at all times, nor can | The sync client cannot remain connected to the server at all times, nor can |