第5回東北情報セキュリティ勉強会に参加しました。
スタッフの皆様, 参加者の皆様, お疲れ様でした, そして, ありがとうございました.
プリン美味しかった
講義より、おやつタイム・グループディスカッションの時間の方が長かったです。
- プリン屋のプリンの差し入れが!
- 手作りゼリーの差し入れも
- むしろ、プリン目当ての人すらいた
参加人数は40人くらい。
- うれしい事に学生は無料!懇親会も半額!
- 学生が全体の3分の1くらい(東北大学生の運営スタッフも!)
- 理学部(非情報科)の人も結構。
- 一見さんにも優しい勉強会でした。
講義内容(MongaDBやHadoopなどのNoSQLは適材適所で使おう)
NoSQLとは
- RDBMS(リレーショナルデータベース)が不得意なところは、それ用の合ったDBを使おう
- スケールアウトさせやすい(サーバさえ増やせば性能が上がる)
- 特定の処理に特化し高速
- 裏を返せば出来ない事は沢山
- e.g. データがメモリ上に載るので、電源を切れると消える
- e.g. SQLによる複雑な操作が出来ない
- NoSQLの例
- wikipedia:key-valueストア(Memcached, Tokyo Tyrant, Redis, kumofs, ...)
- wikipedia:ドキュメント指向データベース(MongoDB, CouchDB)
- wikipedia:列指向データベースマネジメントシステム(Cassandra, HBASE)
各NoSQLの特徴
- wikipedia:Memcached
- key-valueストア
- 完全一致検索しか出来ない(単なるHashと同じ)
- 揮発性(電源を切ると消える)
- 非常に高速
- データの有効期限を設定できる(expire)
- key-valueストア
- wikipedia:Tokyo Tyrant
- key-valueストア
- 完全一致検索しか出来ない(単なるHashと同じ)
- 永続性
- データストレージはwikipedia:Tokyo-Cabinet(Tyrantはラッパー)
- データ型によっては複雑な検索が出来る
- key-valueストア
- wikipedia:MongoDB
- ドキュメント指向データベース
- スキーマレス(カラム名を予め決める必要が無い)
- wikipedia:Binary JSONで保存(内部的にもjavascript)
- Joinとトランザクション以外をサポート
- とは言え, Group Byなどは複雑になる
- 正規表現検索も出来る
- 更新性能が比較的高い
- Ruby On Railsから使える
- スキーマレスな点も合わせ, wikipedia:Lightweight LanguageならぬLightweight Database的な扱いが出来る.
- ドキュメント指向データベース
- wikipedia:Cassandra
- 列指向データベース
- 大規模データの扱いが得意
- スケーラビリティ(NoSQLの中でも1,2を争う)
- Twitterが使用を検討中
- 単一障害点が無い
- サーバを分散する時, 司令官・マスター的な役割のサーバが死ぬと, 全体が死んでしまう.
- Cassandraは全サーバに同じ役割を持たせる
- したがって, 1サーバが死んでも全体は動き続ける
- wikipedia:Hadoop
- Googleのwikipedia:MapReduceのオープンソース版
- (DBと言うより)分散処理フレームワーク
- 複数台のサーバを使って処理を分散
- 非リアルタイムの救世主
スケーラビリティがNoSQLのアピールポイント
- 複数サーバに分散できる(1サーバのデータ量が小さくなる)
- 高速化(データがメモリに載りやすい)
- 更新もスケールする(必要なサーバ毎に独立して処理できる)
- ばっち処理も短時間ですむ
分散化の方法
- Consistent Hasing
- ハッシュ値でサーバに振り分け
- しかし単に, ↓とするだけではサーバー数が変化するとオジャンになる.
the_server = servers[hash(data) % len(servers)]
-
- そこでConsistent Hasing
- ここの図を見てください.
- Range Partitioning
- データの範囲毎にサーバを割り当て
- e.g. 1998年はこのサーバ, 1999年はこのサーバ
- 範囲検索がしやすい
- 反面範囲の分け方が重要・難しい
- 1999年のデータにアクセスが集中すると, そのサーバに負荷がかかる
- また, メタ情報用のサーバが別に必要
- データの範囲毎にサーバを割り当て
MongoDBを使ってみる
- Railsで使える
- 個人でも楽に入門できる
- ローカル環境で
- Amazon EC2でも, 自分で入れればOK
- 今1年間無料キャンペーンらしい
グループディスカッション
NTTデータのHadoop報告書が有用
-
- 分厚いが読む価値がある
- NTTデータはこういう研究を幾つも取り組んでいるらしい
やっぱりNoSQLはノウハウが足りない
-
- ノウハウが無いから思い切って導入できない
- 導入できないからノウハウを積めない
- ノウハウが無いから(ry
- 今は流行り出しつつも, 皆良く分っていない状態
- 一旦熱が冷めてから, ノウハウの蓄積後, 普及期に入る
- 今勉強しておけば, 来るべき日に大活躍できる
- 就職にも有利になる(?)
- 普及期に入らず, 忘れ去られるだけかも知れないが
MongaDBは Lightweight Database的に使える
- Ruby on Railsから使える
- 難しい設計が不要
- よって, 初心者にも使いやすい
- むしろ何でもかんでもMongaDBでいいかも
- とりあえず, MongaDBで書く
- 性能が足りなくなったら, サーバ増設で対処
- 金さえあればスケールする
参加した感想・反省・成果
- 就職活動するなら, NoSQLでソーシャルアプリでも書いてiPadで面接官に見せろとのアドバイス
- ハイ、書きます
- 名刺を用意するべきでした
- 学生の方も普通に持っています
- とにかく, 楽しかったです
- 初参加でも親しく接してくださいました
- 社会人の中でも勉強会に参加されるのは1%ぐらいです
- そんな人達と直接会話できる良い機会でした
その他
- 次回勉強会は年明けらしいです.
- 東北デベロッパーコミュニティ忘年回が12月3日にあるそうです