Skip to content
Gordon Woodhull edited this page Feb 19, 2015 · 26 revisions

RCS is a fast storage of common metadata in a RCloud deployment instance. For lack of a better name, RCS stands for RCloud Storage. Conceptually, the back-end can be an arbitrary key/value store; RCloud provides out-of-the-box bindings to a Redis back-end and a (deprecated) file-based back-end.

RCS is used internally to store notebook lists and metadata, and user preferences. RCloud applications are also welcome to use RCS through the functions in rcs.R; however, they are only allowed to write to keys under <user>/. This may be enforced in the future.

RCS details

Valid key formats:

<user>/<notebook-id>/<key>...
<user>/system/<key>...
.<domain>/<notebook-id>/<key>...
.<domain>/system/<key>...

Usernames may not start with a dot (.) to not cause ambiguity between domains and usernames. At R level keys should be constructed using usr.key() function or application-specific sub-function such as stash.key()

Current domains

  • .notebook - information about notebooks
  • .stash - stashed notebooks
  • .allusers - options for all users

Currently used keys:

Stashes

  • .stash.<stash-name>/<notebook-id>/<version>.gist stashed gist
  • .stash.<stash-name>/<notebook-id>/<tag>.tag tag - payload is the version hash associated with that tag. Typically HEAD tag is used to store the most recent version.

Notebooks

  • .notebook/<notebook-id>/public - set to 1, if present the notebook is published
  • .notebook/<notebook-id>/starcount - star counter
  • .notebook/<notebook-id>/stars/<user> - user starred a notebook
  • .notebook/<notebook-id>/username - owner
  • .notebook/<notebook-id>/description - name of notebook
  • .notebook/<notebook-id>/last_commit - last modified timestamp
  • .notebook/<notebook-id>/visible - boolean, whether other users can see the notebook in All Notebooks

User state and options

  • <user>/system/config/current/ - current open notebook
    • <user>/system/config/current/notebook - notebook id
    • <user>/system/config/current/version - notebook version (commit hash)
  • <user>/system/config/* - per-user options
    • <user>/system/config/notebooks/* - all non-deleted notebooks of a user
    • <user>/system/config/recent/* - recently opened notebooks, <notebook-id> = <timestamp>
    • <user>/system/config/ui/collapse-* - collapse state of side panels
    • <user>/system/config/addons - vector of RCloud extension packages to load for this user with each session
    • <user>/system/config/skip-addons - vector of RCloud packages not to load for this user
  • .allusers/system/config/* - options for all users
    • .allusers/system/config/addons - vector of RCloud extension packages to load for all users with each session
    • .allusers/system/config/featured_users - vector of users to populate RCloud Sample Notebooks