| commit 369: | 11895faae1ce |
| parent 368: | 058d9f898919 |
| branch: | default |
| tags: | riak-0.6 |
riak-0.6 release notes
11 months ago
riak /
README
| r369:11895faae1ce | 158 loc | 5.4 KB | embed / history / annotate / raw / |
|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | Welcome to Riak.
Riak is a distributed, decentralized data storage system.
Below, you will find the "quick start" directions for setting up and
using Riak. For more information, browse the following files:
README: this file
TODO: a list of improvements planned for Riak
LICENSE: the license under which Riak is released
*.sh: various startup scripts
riak_demo.escript: demo for a base level of Riak functionality
doc/
basic-setup.txt: slightly more detail on setting up Riak
basic-client.txt: slightly more detail on using Riak
architecture.txt: details about the underlying design of Riak,
and how this affects applications using it
index.html: the root of the edoc output of 'make docs'
src/
*.erl: the source for Riak (it's friendly)
config/
*.erlenv: example configuration files
Quick Start
---
This section assumes that you have copy of the Riak source tree at
$RIAK. You should have created this by cloning a repo or expanding
a tarball from somewhere.
The quick start goes like this:
1. Build Riak
2. Start the Riak server
3. Connect a client and store/fetch data
1. Build Riak
-
Assuming you have a working Erlang (R13 or later) installation,
building Riak should be as simple as:
$ cd $RIAK
$ make
2. Start the Riak server - Assuming no errors were generated in the
build step, $RIAK/config/riak-demo.erlenv and replace all instances of
$RIAK with the directory in which $RIAK is installed. For example,
change:
{riak_heart_command, "(cd $RIAK; ./start-restart.sh $RIAK/config/riak-demo.erlenv)"}.
to:
{riak_heart_command, "(cd /usr/local/riak; ./start-restart.sh /usr/local/riak/config/riak-demo.erlenv)"}.
Then start riak:
$ cd $RIAK
$ ./start-fresh.sh config/riak-demo.erlenv
The server should start, then background itself, leaving you at a
command prompt.
At this point, you can use riak_demo.escript to ensure that Riak is
functioning:
$ ./riak_demo.escript config/riak-demo.erlenv
Attempting to connect to 127.0.0.1:9000 with cookie riak_demo_cookie...
Connected successfully
Looking for pre-existing object at {riak_demo, "demo"}...
No pre-existing object found, creating new
Storing object with new value...
Written successfully
Fetching object at {riak_demo, "demo"}...
Fetched successfully
Object contained correct value
SUCCESS
If riak_demo prints no "Error: ..." messages, and instead prints
"SUCCESS", then Riak is working.
3. Connect a client
-
Assuming no errors were generated during the server start step, a
simple client interaction will look like:
$ erl -name riaktest@127.0.0.1 -pa $RIAK/ebin -setcookie riak_demo_cookie
(riaktest@127.0.0.1)1> %% connect to Riak
(riaktest@127.0.0.1)1> {ok, C} = riak:client_connect('riakdemo@127.0.0.1').
{ok,{riak_client,'riakdemo@127.0.0.1',
"20090722191020-riaktest@127.0.0.1-riakdemo@127.0.0.1-266664"}}
riaktest@127.0.0.1)2> %% Create a shopping list for bread at /groceries/mine
riaktest@127.0.0.1)2> O0 = riak_object:new(<<"groceries">>, <<"mine">>, ["bread"]).
{r_object,<<"groceries">>,<<"mine">>,
[{r_content,{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],[],[],...}}},
["bread"]}],
[],
{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],[],[],[],...}}},
undefined}
(riaktest@127.0.0.1)3> %% store the list
(riaktest@127.0.0.1)3> C:put(O0, 1).
ok
(riaktest@127.0.0.1)4> %% retrieve the list
(riaktest@127.0.0.1)4> {ok, O1} = C:get(<<"groceries">>, <<"mine">>, 1).
{ok,{r_object,<<"groceries">>,<<"mine">>,
[{r_content,{dict,2,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],
[["X-Riak-Last-Modified",87|...]],
[],[],[],...}}},
["bread"]}],
[{"20090722191020-riaktest@127.0.0.1-riakdemo@127.0.0.1-266664",
{1,63415509105}}],
{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],[],...}}},
undefined}}
(riaktest@127.0.0.1)5> %% extract the value
(riaktest@127.0.0.1)5> V = riak_object:get_value(O1).
["bread"]
(riaktest@127.0.0.1)6> %% add milk to the list
(riaktest@127.0.0.1)6> O2 = riak_object:update_value(O1, ["milk"|V]).
{r_object,<<"groceries">>,<<"mine">>,
[{r_content,{dict,2,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],
[["X-Riak-Last-Modified",87,101,100|...]],
[],[],[],[],[],...}}},
["bread"]}],
[{"20090722191020-riaktest@127.0.0.1-riakdemo@127.0.0.1-266664",
{1,63415509105}}],
{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
{{[],[],[],[],[],[],[],[],[],[],[],[],[],...}}},
["milk","bread"]}
(riaktest@127.0.0.1)7> %% store the new list
(riaktest@127.0.0.1)7> C:put(O2, 1).
ok
(riaktest@127.0.0.1)8> %% find out what else is in the groceries bucket
(riaktest@127.0.0.1)8> C:list_keys(<<"groceries">>).
{ok,[<<"mine">>]}
|
