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.Each server in the RAMCloud system serves two roles: it is
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.A machine running one or more applications that use the RAMCloud storage system. The applications normally use a
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.|
A distinguished server that manages the other servers in the RAMCloud cluster. Some of the coordinator functions are:
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.
A variable-length byte string (up to 64 KB) that names an object within its table.
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.Used by a master to hold object data. Each log is divided into an ordered list of
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.
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.
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.The basic unit of data stored in the RAMCloud system. Each object is named with a
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||tablets from a crashed master. A role that a master can take on during recovery; a recovery master takes over one or more|
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.
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 locator||Service Locators for details.Provides 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|
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.
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.
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.