「ソーシャルアプリでNoSQL(あるいはKVS) 〜実践NoSQL〜」に出席してきました
KVSについて興味を持って調べているのですが、他社でどのようなKVSが、どう利用されているのか、どう評価されているのかが聞きたかったので、グリーCTOの藤本さんが講師を務めたセミナー、「ソーシャルアプリでNoSQL(あるいはKVS) 〜実践NoSQL〜」に出席してきました。
データ集計をどうやってやるかとか、Consistencyな更新(cas操作を使う)とか、シリアライズ形式のこととか、気になっていた部分のお話をたくさん聞けたので、とてもためになるセミナーでした。
忘れないうちに気になったところを簡単にメモしておきます。
(*スライドの流れ通りではないです)
1:1型(key : value)KVS
- いわゆるKVS。単純な実装なので安定感がある。利用実績も豊富
- kumofs, Flare, voldemote, Tokyo Tyrant, etc..たくさんのソリューションがある
- グリーでは足あと帳という機能で1:1型のKVSを利用している(多分Flare?)
一つのKeyに対応するデータを複数格納したい場合
casについて
- memcachedがサポートしているデータ操作の一つ
- compare and swap の略、比較してから交換する。
- データ取得後更新する時に、他のプロセスから値が更新されていないかどうかを知るための仕組み
1:n型(key : value)KVS
- 1つのKeyに対し複数のValueを持つタイプのKVS。
- Redis, MongoDB, CouchDB, Cassandra, GAE/DataStore, HBaseとか
- 複雑な実装。パフォーマンスなどいろいろ問題
Redis
Cassandra
- もっとテーブルっぽい
- Writeの性能を上げることに血道を上げている印象
- スゴイけど、それSSDでよくない?
その他メモ
補遺
- カウンターとかキューのようなデータ構造が、casを使えば実装できます。cas操作についてはこのページが分かりやすいです
- memcachedプロトコルCAS操作について - さくらインターネット研究所Blog
- 懇親会でちょっと藤本さんとお話させていただきました。新しい技術は導入いろいろ難しいですよねと言ったら、「実績は作ればいいんですよ!」と言われてプレッシャー。。