Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 88 lines (46 sloc) 5.265 kB
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
1 Below is a list of terms and their applicability within the context of Riak:
2
550ed0e fixing a few typos and links in Fast Track. Deleting branch.
Mark Phillips authored
3 <div id="toc"></div>
4
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
5 h2. Bucket
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
6
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
7 A Bucket is a container and keyspace for data stored in Riak, with a set of common properties for its contents (the number of replicas, for instance). Buckets are accessed at the top of the URL hierarchy under "riak", e.g. @/riak/bucket@.
8 * [[Take a more in depth look at Bucket Operations|REST API]]
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
9
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
10 h2. Consistent Hashing
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
11
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
12 Consistent hashing is a technique used to limit the reshuffling of keys when a hash-table data structure is rebalanced (when slots are added or removed). Riak uses consistent hashing to organize its data storage and replication. A Riak cluster is a 160-bit integer space which is divided into equally-sized partitions. Each vnode in the Riak Ring is responsible for one of these partitions, and the location on the ring responsible for storing each object in Riak is determined using the consistent hashing technique.
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
13 * [[More on Consistent Hashing|http://en.wikipedia.org/wiki/Consistent_hashing]]
14
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
15 h2. Gossiping
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
16
17 Riak uses a "gossip protocol" to share and communicate ring state and bucket properties around the cluster. Whenever a node changes its claim on the ring, it announces its change via this protocol. Each node also periodically sends its current view of the ring state to a randomly-selected peer, in case any nodes missed previous updates.
18
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
19 h2. Hinted Handoff
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
20
21 Hinted handoff is a technique for dealing with node failure in the Riak cluster in which neighboring nodes temporarily takeover storage operations for the failed node. When the failed node returns to the cluster, the updates received by the neighboring nodes are handed off to it.
22
23 Hinted handoff allows Riak to ensure database availability. When a node fails, Riak can continue to handle requests as if the node were still there.
24
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
25 h2. Key
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
26
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
27 Keys are unique object identifiers in Riak and are scoped within buckets.
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
28
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
29 h2. Links
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
30
31 Links are metadata attached to objects in Riak. These links make establishing relationships between objects in Riak as simple as adding a Link header to the request when storing the object.
32
33 * [[More about Riak's Links|Links]]
34 * [[More on the Link header|http://www.martinpayne.me.uk/experiments/HTTP/Link-Header/HTTP-Link-example.html]]
35
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
36 h2. Merkle Tree
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
37
38 Merkle Trees are used in Riak to determine which objects on a node need updating. Nodes will exchange a Merkle Tree to determine what has changed instead of comparing every object on every node.
39
40 * [[More information on Merkle Trees|http://en.wikipedia.org/wiki/Merkle_tree]]
41
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
42 h2. Node
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
43
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
44 A node is analogous to a physical server. Nodes run a certain number of vnodes, which in turn claim a set number of partition in the Riak Ring key space.
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
45
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
46 h2. Object
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
47
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
48 An object is another name for a value.
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
49
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
50 h2. Partition
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
51
52 Partitions are the spaces into which a Riak cluster is divided. Each vnode in Riak is responsible for a partition, and data will be stored on a set number of partitions determined statically based on an object's key.
53
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
54 h2. Quorum
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
55
56 Quorum in Riak has two meanings:
57
58 # The quantity of replicas that must respond to a read or write request before it is considered successful. This is defined as a bucket property or as one of the relevant parameters to a single request (R,W,DW,RW).
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
59 # A symbolic quantity for the above, "quorum", which is equivalent to *n_val / 2 + 1*. With Riak's default settings, this is *2*.
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
60
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
61 h2. Read Repair
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
62
63 Read repair is an anti-entropy mechanism used by Riak to optimistically update stale replicas when they reply to a read request with stale data.
64
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
65 * [[More about Read Repair|Replication]]
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
66
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
67 h2. Replica
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
68
69 Replicas are copies of data stored in Riak. The number of replicas required for both successful reads and writes is configurable in Riak and should be set based on your application's consistency and availability requirements.
70
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
71 h2. Ring
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
72
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
73 The Riak Ring is a 160-bit integer space. This space is equally divided into partitions, which are claimed by vnodes, which reside on actual physical server nodes.
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
74
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
75 h2. Value
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
76
77 Riak is most-easily described as a key/value store. In Riak, "values" are opaque BLOBS (binary large objects), identified with a unique key, that can be any type of data, though some programming advantages are gained by using JSON.
78
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
79 h2. Vector Clock
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
80
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
81 Riak utilizes vector clocks (or _vclock_) to handle version control. Since any node in a Riak cluster is able to handle a request, and not all nodes need to participate, data versioning is required to keep track of a current value. When a value is stored in Riak, it is tagged with a vector clock and establishes the initial version. When it is updated, the client provides the vector clock of the object being modified so that this vector clock can be extended to reflect the update. Riak can then compare vector clocks on different versions of the object and determine certain attributes of the data.
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
82
785ee1a @dreverri Update references to Vector Clocks
dreverri authored
83 * [[More about Vector Clocks|Vector clocks]]
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
84
f3bb6a1 @dreverri Use h2 header for terms
dreverri authored
85 h2. Vnode
90fa423 @dreverri Updated files with most recent import from confluence; including code…
dreverri authored
86
c9b2f76 small fixes to a lot of pages
Mark Phillips authored
87 Vnodes, or "virtual nodes" are responsible for claiming a partition in the Riak Ring, and they coordinate requests for these partitions. Vnodes map to physical nodes in a Riak cluster, and the number of vnodes on each physical node is determined by the number of active physical nodes in the cluster.
Something went wrong with that request. Please try again.