• Edit
  • View
  • Diffs
  • Info
  • Subscribe
  • Raw
  • Print

Wizbit Core

Overview

The core of Wizbit is a UUID-based versioned data store. One of the core goals of Wizbit is freedom to work on multiple devices, and as such the Wizbit core also includes synchronization functionality. The core of Wizbit is implemented using the following modules.

Store

A Store is a place where Wizbit stores all of the data, there should be one Store for every Wizbit enabled device e.g. a computer, a handheld etc... The Store knows about the data stored within it, such as where the versioned file data exists.

Todo

  • Synchronisation - Syncing all of the Bits and their tips across two stores.

  • Indexing and hierarchy? - Unsure about this one but maybe we need some over arching method of indexing the Bits in a Store. At the very least a list of all the Bits, but possibly including some kind of hierarchy of Bits, for instance TOMBOY/note, CALENDAR/appointment, FILES/file etc...

Bit

The Bit represents a data object and is referenced by a UUID, a data object can be a file, note, calendar entry, contact etc... Any form of data which would normally be stored as a file, or within a data store can be converted to a Bit or Bits. The Bit has a collection of Tips including the Primary Tip and a Root as well as many Wiz Versions in between.

Version

A Version is a revision of a Bit, every time a Bit changes a new Version is created. There are 4 kinds of Versions;

  • Root - The initial revision of a Bit.

  • Tips - A reference to the tip of a branch, essentially a pointer to a commit at the tip of a chain of commits, like a reflog in Git, all Tips can be traced back to the Root

  • Primary Tip - The most recent Tip, when opening a Bit and reading from it, the Primary Tip would be the revision of the Bit opened first.

  • Normal - An ordinary version somewhere between the Root and a Tip.

Internal Architecture

Graphs

Wizbit implements a graph system similar to the Git graph although missing a Tree object, the Wizbit graph consists of Commits and Blobs, the graph is internal to the architecture of Wizbit and will never be used by any application developers. The graph deals with how relationships between parents and children are managed, and the reading and writing of Versioned Blobs of data.


Image of graph will go here.


Commit Store

A database which handles the graph data, storing the relationships between commits, the relationships consist of parents and children allowing us to move forward and backwards in the graph.

Todo

  • Security - it is important for the commit store to include some form of security which would allow us to;

    • Verify the structure of the graph
    • Ensure that the commit store itself has not become corrupted

Definition of Terms

  • UUID - Universal Unique IDentifier

  • Head - The currently checked-out version, normally the master revision in a Store

  • Commit - A version as it is committed to disk

  • Blob - A binary large object of data (sometimes not so large :)), a blob is essentially the binary copy of a Version's data.

Wizbit: Architecture (last edited 2008-10-22 12:46:14 by KarlLattimer)