Key-Value Store (Strage) 勉強会にお邪魔してきました

id:Voluntas さんのコネで潜り込んできました。

当初の目当ては、id:teahut さんによる Kai の発表と、首藤さんによる Overlay Weaver の発表だったのですが、面白い発表が目白押しで非常に濃い 5 時間を過ごす事ができました。

感想

素晴らしいまとめが ここここ にある為、後々の自分の為に印象に残ったプレゼンの感想だけ適当に残しておく事にしました。

Groonga (Senna の後継)

ペアプレゼンを始めて目の当たりにした。
メインの話者が言い忘れた補足をサブの話者が行う為、非常に解り易いプレゼンになっていたし、3割ほど漫才の要素が入っていたので目が離せなかった(w;
groonga.org のトップ絵は id:tasukuchan さんの飼い猫だとの事。
初期で用意する QL に Scheme を選んだのは、Parser を書くのが楽だったからな?個人的には、好きな言語なので、利用する際には、Scheme を使おうと思った。
libevent を使わなかったのは、存在を知る前に同種のライブラリを自前で用意していたからとの事。

Tokyo Cabinet (高速 DBM)/ Tokyo Tyrant (Tokyo Cabinet ネットワーク I/F)

Hyper Estraier では、そのうち偉い人に怒られる日が来ると焦りながら Tokyo Cabinet を作ったが、ハードの高速化のお陰で未だに Hyper Estraier が現役で動いているとの事。ムーアの法則スゲー(w;
一人のエンジニアが出来る事は非常に多く、一台のサーバでも工夫次第で多くの仕事が出来る。mixi ですらそうなのだから…。という一言が非常に印象深く、身が引き締まる思いだった。

id:teahut さんもプレゼンで話されていましたが、Kai のストレージに使えるんじゃないかと私も本気で考えています。
ただ。Erlang から使う場合、Port 経由だと Erlagn Shell 全体がロックされるので、C Interface で作った Node から Tokyo Cabinet を扱うのが良いかな?(C Node の管理が面倒か…)

Key の効率的格納

少量のリソースしか用意されていない環境下(組み込み等)での効率的な Key の格納方法の話。
Value の効率的格納は、機会があれば話すとの事で、Key の話がメイン。
tx の存在を始めて知る。Trie の実装。つくばエクスプレスの中で作ったから tx という名前に。iPhone アプリなどで利用実績あり。
Trie は、後で調べる。

Memcached (説明不要)

発表者の前坂さんが非常にプレゼン慣れしていて非常に聞きやすかった。あんなプレゼンしたいと本気で思った。

Memcached は、簡単・早い・しぶとい (だったかな?) と三拍子揃っている。
Facebook から Patch 提供を受けたが、コードの構成が大幅に変更されており、受け入れる事を断念した。(Patch 書く際は、元のコードを尊重しよう)ただし、Global Lock が排除されている等、有益な Patch である為、部分的に取り込む予定。
Binary Protocol では、非同期の更新であっても、エラー発生時はエラー通知をしてくれる。(この辺りは、後で詳しく調べる)
IANA に申請し、11211 は正式に Memcached のポート番号となった。

KaiDynamo + Memcached / Erlang

id:teahut さんと id:ita-wasa さんに挨拶にお伺いした際、Kai の Memcached I/F のバグの話をお聞きし、勉強会が終わって帰宅した後、妻を寝かしつけて(w;)から慌ててテストコードを書いて障害の原因を調べました orz
原因は判明しているので、早々に修正します。申し訳ございませんでした。(詳細は、別途にエントリーを書きます)

プレゼンの中で、確かに一台のサーバで出来る事は多いし、その努力は非常に大切だが、日本よりアメリカのウェブサービスのアクセス数は一桁多く、そう言った環境下で DHT は力を発揮する(ニュアンスが異なっていたら、ごめんなさい)と言うような事を話されていた。
個人的に、一つのノードの性能を最高に引き出しつつ、それが更にスケールアウトされているシステムを構築して行きたいと思った。

100 行以上の Erlang コードを書いた事がある人は挙手して下さいとの事で手を挙げたら、手を挙げた人が数名しかおらず、全員顔見知りだった事に愕然とした orz

そうそう…Kai Project Team は、絶賛開発者募集中です。DHT に興味のある方や、Erlang に興味のある方、Key-Value Store が仕事で必要な方など、是非、お声をお掛けください。

ROMA (楽天の分散 Key-Value Store)

プレゼン後にトイレで Ruby コードの行数や QPS についてお聞きする。
その際、打倒 Kai に向けて頑張ります!と冗談混じりに宣戦布告されました(と、id:teahut さんにチクりを入れておく)

全てのノードが、全てのノード情報を持つ為、zero-hop であり DHT ではない様子。

Overlay Weaver (Overlay 構築 Toolkit)

雲の上の存在、大御所 首藤さんのプレゼン。

会場の何処にいるのか、ずーっと探していて、自分の斜め前に座っている事に気が付いて驚いた。終電が危なかったが、何とかギリギリ名刺交換が出来て、とても嬉しかった。

ルーティングアルゴリズムの差し替えに関する質問をしたかったが、Overlay Weaver のドキュメントとコードを読めよ!カス!と自己完結。
EpiChord の不明点も質問したかったが、プレゼン内容とかけ離れすぎているし、終電が危うかったので止めておく。
ご尊顔を拝見できただけで満足です。

プレゼンでは、DHT も設定値により zero-hop になると話されていた。確かに、multi-hop で初めから作っておけば、churn 環境下では、経路の維持コストを下げる為に経路表のサイズを小さくし、イントラ内での利用の際には、経路表のサイズを大きくする事で応答速度を優先する事が出来る。multi-hop 万歳(w;

GREE さん

会場提供&運営ご苦労様でした。

実は、会場になった GREE さんは、在職中の会社を辞めようと思った際に面接を受けた事があります。
その際、社会人にあるまじき行為ではあるのですが、最終面接後に私がフェードアウトした経緯があり、とても行き難かったのですが、ビクビクしながらノコノコ行ってきました。(いや、私なんぞ覚えてないだろうと言う打算もありましたが)
今更ですが、その節は、大変、申し訳ございませんでした。