Skip to content

TechnicalMerits

berkus edited this page Nov 8, 2012 · 2 revisions

More technical "how"s.

This page is still under construction

How all your devices stay in sync?

There are no central servers, so how do devices see all the updates meant for them?

Metta organizes all devices into a network, each device running Metta is called a node. All nodes in a network communicate in a peer-to-peer fashion, without contacting any central servers.

Such a dynamic network needs constant updates of routing information, which could cause a lot of routing flood. A two layer scheme is implied - static nodes use netsukuku protocol to keep routing information up to date. Mobile nodes use combination of simpler high locality protocols with knowledge of multiple static routing nodes. Therefore, connectivity requirements are easier on mobile devices, which usually do not have enough battery power for full peer-to-peer communication all the time.

AP of CAP: Eventual Consistency of data between nodes. (TODO, @sa You can't give up partitioning in CAP)

The off-site backup system’s goals are to support recovery after a disaster by keeping snapshots of file systems at other Internet sites. The system spreads the data over many sites in order to balance storage and network load. This striping also allows very large file systems to be backed up onto a set of hosts with individually limited disk space. (@sa Chord)

How data security is achieved?

All network connections between Metta Nodes are end-to-end encrypted. There is simply no way to establish a non-encrypted session. (TODO) The data storage on nodes is encrypted as well, with various sections of data encrypted with different keys, depending on requirements - someone else's data will be encrypted with their own keys.

How files are versioned and de-duped.

Our data is everywhere, and it's not always the same. Over time we end up with out of date copies, forked documents and lost copies and sometimes we wish we could just rewind to how our thesis looked last night.

Metta's assocfs uses content-addressable storage similar to git. An object has a content hash. Different objects have different hashes - saving a modified version will save a different object. Same objects will have same hash and will therefore be stored in the same location, providing transparent deduping.

No directories - so no problems with directories contents. Views (which act as a sort of a very dynamic directories) may contain both object hashes (to point to exact version) or UUIDs (to point to a versions tree).

Clone this wiki locally