NoSQL in Afternoonに参加した

先日、NoSQL in Afternoonに参加してきました。
NoSQLについていろいろ興味があったので参加したのですが、
全体的にプロダクトの概要レベルまででした。
時間も多くなかったので当然ですが。


ATND
http://atnd.org/events/8460

USTREAM
http://www.ustream.tv/recorded/10575011

発表スライド
http://d.hatena.ne.jp/szk-takanori/20101102/p1


内容については、USTREAMや発表スライドを見ていただくとして
以下、私の個人的な所感を書いていきたいと思います。

Hibari/NoSQL for Bigdata

名前は聞いたことありましたが、
中身については殆ど知らなかったので、面白かったです。
Erlang実装の分散型KVSで、ラージバリュー(チャンキング)に対応していているそうです。
Consistent Hashing & Chain Replicationを採用していて、
Strong Consistencyを意識してるということで、
可用性は多少落ちるんだと思います。


YCMBを使ったベンチマークでは、
さすがにWriteはCassandraが早かったが、
ReadはHibariかと思ったらそうでもなかった的な感じで、
よくわからなかったです。


CAP定理のどこを重視してるかという質問で
発表者が詰まっていました。
CAP定理は難しくて、シナリオによっても変わってくるので一概に言えないとのことでした。

Okuyama

全然知りませんでした。
Iwaseさんという日本人がJavaで完全フルスクラッチで書いた分散型KVSだそうです。
永続化の方式はメモリのみとディスクのみ、メモリ+ディスクの3つがあるそうです。
ゲートウェイサーバ経由でアクセスする(ゲートウェイは冗長化が可能)。
keyにタグを付けることができて、タグごとに操作することもできたり、
JavaScriptをkeyと一緒に投げて処理をさせることができるそうで、
ちょっと面白いと思いました。

ただ、結構qpsも出ていて、リニアにスケールするとのことでしたが、
検証が30台までしかしてないということで、
ちょっと信頼性が疑問でした。

Cassandra

Cassandraを知っている人はほぼ全員でしたが、
実際に業務として使っている人は1人くらいでした。
Cassandraの基礎的なことの説明でした。

DC間レプリケーションに対応していて、
実際に3回DCが落ちたところを見たことあるらしいです。

ROMA

楽天の一部(セッションデータ、パーソナルページ履歴)で使われているKVSです。
Ruby実装でConsistent Hash & Chain Replicationを採用しているとのことでした。
また、プラグイン機能もあってDSLなどでも記述できるらしいです。
英語のプレゼンだったのですが、日本人のしゃべる英語はわかりやすかったです。

MongoDB

C++実装のドキュメント指向DBです。
MongoDBの使い方がメインで、
中身についての説明はレプリケーションくらいでした。
セカンダリインデックスを付けることができて、
MapReduceもサポートしてるとのことでした。
今一番使ってみたいDBですね。

Kumofs and The MessagePack

何回か古橋さんの発表を聞いたり、
発表のスライドを見ていたりしていたので
目新しいことはあまりありませんでした。
MessagePackは使ってみたいです。
古橋さんも英語のプレゼンでした。

CouchDB

MongoDBに似ている感じでした。
スキーマフリーでドキュメント指向、RestfulなAPI
MongoDBとの違いはレプリケーションの仕方で、
CouchDBは、HTTPを使って差分のみをレプリケーションするらしいです。
また、BIGCOUCHというCouchDBにScalingをプラスできる
フレームワークがあるらしいです。Amazon Dynamoを参考にしてるとのことでした。
パフォーマンスがどれくらいでるのでしょうか。

Hadoop/HBase

Hadoop、HBaseについての基礎的なことでした。
HBaseはMaster/Slave型アーキテクチャで、
Keyのレンジでパーティショニングを行うそうです。
可用性より一貫性を重視しているそうです。


先日にHBase Trainingも受けましたが、
HBaseを業務として使いたいですね。どこがいいかなぁ。

全体を通して

目指しているものによって、設計が少しずつ違っているという印象でした。
それぞれの特徴を見極めてどれを使うのが最適かを考える必要がありそうです。
ただ、すべて自分で検証するのは辛いので、こういう場合はこれっていう
ベストプラクティスが早く出てきてくれないかなぁっていう感じです。
まあ、自分で作れって話ですよね。。


また、飛び込みでLTをしたMyCassandraも面白かったです。
CassandraのストレージにMySQLを使ってみたという内容でした。
東工大の学生らしいですが、将来が楽しみですね。


あとは、ベンチマークはYCSBがよく使われているみたいですね。
http://wiki.github.com/brianfrankcooper/YCSB/getting-started


最後の方は、正直辛くなってきてましたが、
NoSQLをある意味で俯瞰的に見ることができたのでよかったです。