A persistent storage system

Clone this repo:

Branches

  1. 62e3a48 Report Ledger test results to TestRunner by Brian Goldman · 5 days ago master
  2. 7da62ef benchmark: take the server id for sync benchmark as a command-line param by Przemyslaw Pietrzkiewicz · 20 hours ago
  3. e1b1c9a app: use files::WriteFileInThoPhases(). by Przemyslaw Pietrzkiewicz · 22 hours ago
  4. 879bbdf app: allow the framework to control sync settings per-user by Przemyslaw Pietrzkiewicz · 4 days ago
  5. f59dbb8 cloud_sync: make the sync settings compatibility check per-user by Przemyslaw Pietrzkiewicz · 24 hours ago
88                       88
88                       88
88                       88
88   ,adPPYba,   ,adPPYb,88   ,adPPYb,d8   ,adPPYba,  8b,dPPYba,
88  a8P_____88  a8"    `Y88  a8"    `Y88  a8P_____88  88P'   "Y8
88  8PP"""""""  8b       88  8b       88  8PP"""""""  88
88  "8b,   ,aa  "8a,   ,d88  "8a,   ,d88  "8b,   ,aa  88
88   `"Ybbd8"'   `"8bbdP"Y8   `"YbbdP"Y8   `"Ybbd8"'  88
                              aa,    ,88
                               "Y8bbdP"

Ledger

What is Ledger?

Ledger is a distributed storage system for Fuchsia.

Each application (or more precisely, each component) running on behalf of a particular user has a separate data store provided and managed by Ledger, and vended to a client application by Fuchsia framework through its component context.

The data store for the particular component/user combination is private - not accessible to other apps of the same user, and not accessible to other users of the same app.

Each data store is transparently synchronized across devices of its user through a [cloud provider]. Any data operations are made offline-first with no coordination with the cloud. If concurrent modifications result in a data conflict, the conflict is resolved using an app-configurable merge policy.

Each data store is organized into collections exposing a key-value store API called pages. Page API supports storing data of arbitrary size, atomic changes across multiple keys, snapshots and modification observers.

See docs for documentation.

Repository contents