Mirror of the Rel4tion website/wiki source, view at <http://rel4tion.org>

[[ 🗃 ^yEzqv rel4tion-wiki ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/yEzqv

SSH: git clone USERNAME@vervis.peers.community:yEzqv

Branches

Tags

master :: projects / smaoin / design / network /

data-sharing.mdwn

Purpose

Explain how database content is shared between machines.

Content

As explained in the previous page, the guidelines for the sharing protocol are:

Another important goal: Minimize network operations and dependencies of machines on other machines through the network.

In general, the timing of data sharing may be:

Now let’s see what kinds of data passing can or need to be done.

Sync is preferred for:

  1. Productivity: When the user wants it, it loads locally
  2. Privacy: Network action doesn’t reflect usage pattern
  3. Sending is coordinated, i.e. more safety for server: Instead of waiting for requests, just send synced data periodically
  4. Later access even without network connection
  5. Mesh: pass it on to other machines ==> distributed sharing

Three data levels:

  1. Personal: Created and managed locally
  2. Collaborative: Managed by a team and synced to local machines
  3. Global: Any other data, usually it’s downloaded on demand

Examples:

  1. Personal: E-mail, reminders, diary, personal tasks, pictures
  2. Collaborative: Ontologies, git repo, project wiki, bug database
  3. Global: Other users’ photo albums, websites, large databases

Update model: - Desktop: User runs update, downloading new software versions from repo - Web: Download webpage again and again every time

Hmmm… I need ideas, examples. Remote data which can be a semantic database:

Song database: There are many many songs, and the whole database may be too big to keep on a single machine. What you need as a client is just the portion describing the songs you are interested in, or maybe just the ones you have as OGG files on your computer. It’s not supposed to change much, so you don’t need to sync is periodically. Just download the new portions you need every time you download new song audio to your computer.

Movie database: Similar to song database. But for the purpose of the example, assume new info may be added about movies so it makes sense to check for updates once in a while, say once a month or once a week.

Collaborative research wiki: Two things happen: Download and upload. Download can happen by sync, but periodic sync is not good enough. It has to be either manual, or every time there’s a change, the machine gets a message and downloads the new version. Upload happens by sending updates back to where the data was downloaded.

Family photo album: Assuming no central server exists, every change needs to be propagated to everyone somehow. It can work like a torrent download, but how is everyone notified? An option is let the machines check for updates periodically, and download updates when found.

Recipe sharing website: There may be a huge number of recipes, but you need just a portion. Idea: They are spread among many machines, each recipe copied on many machines. So the user can browse them like a website, search and so on, and at the same time serve as a peer for sharing recipes, either all (like in Tor) or the ones chosen specifically (like Torrent).

Events & calendar: This has a personal part of course, but sometimes organizations etc. publish event calendars, and people can connect to them and see them in their desktop calendar. How to sync it? It depends on the specific calendar. It can be done periodically or let the server inform the client of changes. Adding changes is done locally and then the change is spread i.e. distributed and propagated to all clients.

ELEMENTS

[See repo JSON]