Riak についての疑問

OSC 京都に Riak のセッションを聞きに行った。
内容は Riak の基礎的な事で入門には最適なセッションだった。
仕事で Riak-CS を試験的に分散してないストレージとして試していて、Riak 自体を直接使ってる訳ではないのでとても良かった。
# ちょっと落ち着いたらノードを用意して分散させたい


セッション中に疑問を上手い事まとめれず質疑できなかったので疑問をつらつらと書いてみる。

マスターレ

セッションを聞いていて、Riak はマスターレスとの事でデモでは一つのマシンにポートを分けて 5 ノード起動していて、クラスタに参加したら自動的に同期されて、ノードが落ちていても他のノードにはちゃんとデータが入ってるというのをデモされてた。
マスターレスということはアプリケーションでどこのノードに繋ぎに行かないといけないというのを知っとかないと行けない(よね?)。


とか思ったけど Riak クライアントがよろしくやってくれるのかな。
Client & Connections — Riak Python Client 2.7.0 documentation
引数の nodes にリストを受け付けるみたいだし。

Vector Clocks

Vector Clocks についてセッション中に特に言及は無かったけど、前から疑問に思った事。
Vector Clocks を有効にした時に返って来る Sibling や Vclock の値をどこで管理すれば良いんだろう。
1. アプリケーションから Riak にある値を POST で新規追加
2. 1 とは違う場所で追加した値を取得
3. 2 で取得した値を変更して PUT
この 3 の PUT 時に Sibling が複数になって今追加した値がどの Sibling なのかをどうやってアプリケーションが知れば良いのだろう。
ひとりでやるRiak Advent Calendar 2012 day5 - REST API編 - kuenishi's blog
↑をみると

X-Riak-Vclock: a85hYGBgzGDKBVIcypz/fgbsTTyawZTIlMfKkPHf+BRfFgA=

を使えば良いと理解したけどこれはアプリケーションで管理する必要があるのかな。
Riak の事を良くしらないので的外れな疑問なのかもしれない。