backup

Each server in the RAMCloud system serves two roles: it is master for some objects (it stores those objects in its DRAM and handles reads and writes for the object), and it also serves as backup for other objects. A backup server is responsible for storing information on disk as directed by masters, and retrieving that information from disk during crash recovery. Each object in RAMCloud is typically backed up on several machines; each master divides its data among many different backup machines, and each backup records information for many masters.

client machine

A machine running one or more applications that use the RAMCloud storage system. The applications normally use a client library package to communicate with the RAMCloud servers. Client machines cannot necessarily be trusted by the RAMCloud servers, and the RAMCloud system does not depend on any particular behavior of client machines.

client library

A collection of functions used by applications to access the RAMCloud storage system. The client library may include significant functionality that extends the base functions provided by the RAMCloud servers. For example, the client library will probably understand the contents of stored objects, whereas the servers treat the objects as opaque blobs. It is possible for there to be different client libraries that implement different abstractions on top of the base RAMCloud features; examples might be a memcached API, a full relational model, or a file system API.

crashed master A master that has failed and must be recovered.

coordinator

A distinguished server that manages the other servers in the RAMCloud cluster. Some of the coordinator functions are:

  • The coordinator manages a list of all active servers in the cluster.
  • The coordinator keeps track of which servers contain which tablets; client machines retrieved this information to manage their own caches of configuration information.
  • The coordinator manages access control information, which it makes available to other servers in the cluster (this feature is not yet implemented).
  • The coordinator is responsible for deciding that a server has crashed and initiating recovery of that server.
  • The coordinator is responsible for moving data between servers in the cluster in order to balance load (this feature is not yet implemented).

index

Indexes are only an idea and are not yet implemented. They will be used to provide efficient forms of lookup on data within tables. Each table may have any number of indexes associated with it; each index maps from keys in some form (strings, numbers, timestamps, etc.) to a set of objects within the table. Indexes support range lookups as well as exact matches.

key

A variable-length byte string (up to 64 KB) that names an object within its table.

log

Used by a master to hold object data. Each log is divided into an ordered list of segments. Logs are used in an append-only fashion: the contents of a segment are never modified once written. Each master manages one log, and different masters have different logs.

master

Each object lives in the DRAM of a particular server, which has primary responsibility for managing the object. That server is called the master for the object. All reads and writes of an object must be directed to the master server for that object. Each server in the RAMCloud system is master for many different objects.

mini-transaction

Minitransactions are only an idea and are not yet implemented. A collection of updates to one or more objects implemented atomically by RAMCloud. The current design is closely modeled on the Sinfonia system: a mini-transaction consists of one or more updates to objects, which will only be performed if one or more objects have specified version numbers. If the updates are performed, they happen atomically.

object

The basic unit of data stored in the RAMCloud system. Each object is named with a key that uniquely identifies the object within its table. Objects are variable-length up to a limit of 1MB, and the RAMCloud servers do not interpret the contents of objects: they are just opqaue blobs of data. Each object has a 64-bit version number that increases monotonically whenever the object is modified.

recovery

The period of time immediately after a server crash, during which that server's data is unavailable. During this stage of recovery backups read data from their disks into memory, and one or more recovery masters retrieve enough data from the backups to resume system operation.

recovery master A role that a master can take on during recovery; a recovery master takes over one or more tablets from a crashed master.

segment

A fixed-size portion of a log (currently 8 MBytes). Segments are the unit of replication and backup: each segment exists in the memory of its master and is also replicated on one or more backups. Different segments within a log are typically backed up on different servers. The segment size is chosen so that full-segment writes to disk utilize 90% or more of the maximum disk bandwidth. The segment is also the unit of log cleaning: when most of the data in a segment has been deleted the master can copy the remaining live data to another segment and delete the old segment.

server

One of the machines implementing the RAMCloud storage system. Server machines are "owned" by RAMCloud: they typically only execute trusted RAMCloud code. Server machines execute RPC requests coming from clients, and also communicate among each other to manage the RAMCloud system. Typically, each server acts as both a master and a backup.

service locatorProvides information needed to communicate with a particular server, including the form of network transport to be used,  and additional parameters for that transport, such as a host name and port name. See Service Locators for details.

table

Used to group related objects and to separate data from different applications. Objects are named using a table identifier and a key within the table. Access control information is based on tables, and indexes are associated with particular tables.

tablet

A portion of a table, all of whose objects are stored on a single master. In the simplest case a table has a single tablet and all of the objects of the table live on a single master. If a table becomes too large to store on a single master then it is divided into multiple tablets that are assigned to different servers.

version number

An integer value associated with each object, which is guaranteed to increase monotonically whenever the object is modified. Used to implement atomic operations on the object. Version numbers maintain their monotonic behavior even if an object is deleted and later re-created.

workspace

Workspaces are only an idea and are not yet implemented. Used to hold all of the data for one or more applications. A workspace consists of any number of tables and indexes. A workspace is also the unit of access control: if an application has access to a workspace then it can read or write any information in that workspace.