Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

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 in response to requests from 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.

block

The unit of memory management for object storage on masters. A master divides its stored data into shards (the unit of assignment to backups), each of which is divided into segments (the unit of disk I/O), each of which is divided into blocks in the master's memory. The master can clean blocks within a segment individually in order to avoid fragmentation of its memory.

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.

index

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 64-bit identifier that names an object within its table. By
default keys are assigned sequentially by the RAMCloud system starting at 1 and are never reused; however, applications can choose keys explicitly if they wish, in which case they may also be reused.

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. In normal usage, each server in the RAMCloud system is master for many different objects.

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, and the RAMCloud servers do not interpret the contents of objects: they are just blobs of data.

segment

{anchor: segment) A portion of a shard; this is the unit in which backups write information to disk and is chosen large enough to ensure efficient disk I/O. The segment is also the unit of log cleaning: when a master has copied all live data from a segment, it instructs the backup to delete the segment. Segments are divided into blocks.

server

One of the machines implementing the RAMCloud storage system. Server machines are "owned" by RAMCloud: they only execute trusted RAMCloud code. Server machines execute RPC requests coming from clients, and also communicate among each other to manage the RAMCloud system.

shard

In order to speed up recovery, each master spreads its data across multiple backups; during recovery, the backups can all retrieve their respective portions of the data in parallel. The portion of a master's data that is assigned to a single backup is called a shard. A master's data will typically divide into hundreds or thousands of shards; furthermore, each shard is typically backed up on more than one machine, to provide safety against multiple crashes. Shards are divided into segments, which are in turn divided into blocks.

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.

version number

An integer value associated with each object, which starts at 0 when the object is created and is incremented every time the object is modified. Used to implement atomic operations on the object.

  • No labels