Erlang 分散システム勉強会レポート
Erlang 分散システム勉強会に参加しました。
すごく得るものが多かったです。無理してでも参加してよかった。
Erlangはまりそう。スマートすぎる。
Erlangに興味を持ったのが、FacebookChatのCometサーバがMochiWebだったからでした。
CouchDBは知らなったのですが、FacebookChatはJSONで帰ってきてたのでもしかしてCouchDBベース?
追記:
id:TAKESAKO さんがFlickrに写真をアップしてくれたようです。
追記2:
発表者全員のスライドのリンクを張り終わりました。(kunitさんthx!)
Kai/Dynamo のメカニズムと実装 (takemaruさん, 40分)
Partitioning
メンバーシップ
get/put
バージョン管理
- VectorClock
- マスター不在・時刻同期なし
- 並列ブランチの検出可能
- 各ノードのカウンタのリストで管理
- 各ノードがキーを更新するときに、自分のクロックをインクリメントし、VectorClockの自分のクロックを更新する
データの同期方法
- Merkleツリー
- チェックサムのツリー
ejabberd の仕組み、と運用してみて気がついた erlang のすごいところ (hamano さん, 15分)
remote shell
- erl -noshell
- erl -remshでVMにアタッチできる
- q().で自爆しちゃうから抜けるのはCtrl-C
ホットコードスワッピング
- remote shellでアタッチし、beamファイルをサーバにおいてl(File)で書き換えられる
ドキュメント指向分散DB - CouchDB (id:yohei さん, 20分)
- スライド
- 少佐ネタ
- ドキュメント指向
- スキーマレスデータベース
- RESTful API
- JSON
- JavaScriptでViewFunctionをかける
- ピアベースの分散DBMS
- DB単位で双方向レプリケーション
- コンフリクトは異常ではなく、通常状態
- CouchDB
- 6635行
- StrokeDB(Ruby)は7000行
- MochiWeb
- 6635行
- !=OODBMS
- Loutus Notes/Dominoはドキュメント指向
半構造データベース
-
- スキーマレス
- 自己記述的
TokyoTyrantの設計と実装について (平林さん, 20分)
- スライド
- DBM(key/value構造のDB)とそのネットワークインターフェイス
- DBM:TokyoCabinet
- ネットワークインターフェイス:TokyoTyrant
- マップの永続化とネットワーク共有
- 各種LLバインディング
- 独自プロトコル/memcachedプロトコル/HTTPプロトコル
- 抽象データベース
- ハッシュ/B+木/固定長配列を同一APIで
- blogで最速配信研究会の人が提案してた固定長配列もサポートした
TCの性能
- ハッシュDBのreadで120万qps、固定長DBのreadで2700万qps
- ライバルのBDBより早い