プリンが美味しい勉強会に参加しました。

第5回東北情報セキュリティ勉強会に参加しました。
スタッフの皆様, 参加者の皆様, お疲れ様でした, そして, ありがとうございました.

プリン美味しかった

講義より、おやつタイム・グループディスカッションの時間の方が長かったです。
  • プリン屋のプリンの差し入れが!
  • 手作りゼリーの差し入れも
  • むしろ、プリン目当ての人すらいた
参加人数は40人くらい。
  • うれしい事に学生は無料!懇親会も半額!
  • 学生が全体の3分の1くらい(東北大学生の運営スタッフも!)
  • 理学部(非情報科)の人も結構。
  • 一見さんにも優しい勉強会でした。

講義内容(MongaDBやHadoopなどのNoSQLは適材適所で使おう)

NoSQLとは
  • RDBMS(リレーショナルデータベース)が不得意なところは、それ用の合ったDBを使おう
    • 誤 "No! SQL" 正 "Not Only SQL"
  • スケールアウトさせやすい(サーバさえ増やせば性能が上がる)
  • 特定の処理に特化し高速
    • 裏を返せば出来ない事は沢山
    • e.g. データがメモリ上に載るので、電源を切れると消える
    • e.g. SQLによる複雑な操作が出来ない
各NoSQLの特徴
  • wikipedia:Memcached
    • key-valueストア
      • 完全一致検索しか出来ない(単なるHashと同じ)
    • 揮発性(電源を切ると消える)
    • 非常に高速
    • データの有効期限を設定できる(expire)
  • wikipedia:Tokyo Tyrant
    • key-valueストア
      • 完全一致検索しか出来ない(単なるHashと同じ)
    • 永続性
    • データストレージはwikipedia:Tokyo-Cabinet(Tyrantはラッパー)
    • データ型によっては複雑な検索が出来る
  • wikipedia:Cassandra
    • 列指向データベース
    • 大規模データの扱いが得意
      • スケーラビリティ(NoSQLの中でも1,2を争う)
      • Twitterが使用を検討中
    • 単一障害点が無い
      • サーバを分散する時, 司令官・マスター的な役割のサーバが死ぬと, 全体が死んでしまう.
      • Cassandraは全サーバに同じ役割を持たせる
      • したがって, 1サーバが死んでも全体は動き続ける
スケーラビリティが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年間無料キャンペーンらしい
注意点
  • 運用ノウハウが少ない
    • 枯れていない(バグがありうる)
  • トレードオフの理解
    • Memcached等, 電源が落ちるとデータが消える仕様
  • DeNA社のMySQLをNoSQLのように使う技術も

グループディスカッション

NTTデータのHadoop報告書が有用
    • 分厚いが読む価値がある
    • NTTデータはこういう研究を幾つも取り組んでいるらしい
やっぱりNoSQLはノウハウが足りない
    • ノウハウが無いから思い切って導入できない
    • 導入できないからノウハウを積めない
    • ノウハウが無いから(ry
  • 今は流行り出しつつも, 皆良く分っていない状態
    • 一旦熱が冷めてから, ノウハウの蓄積後, 普及期に入る
    • 今勉強しておけば, 来るべき日に大活躍できる
      • 就職にも有利になる(?)
    • 普及期に入らず, 忘れ去られるだけかも知れないが
MongaDBは Lightweight Database的に使える
  • Ruby on Railsから使える
  • 難しい設計が不要
    • よって, 初心者にも使いやすい
  • むしろ何でもかんでもMongaDBでいいかも
    • とりあえず, MongaDBで書く
    • 性能が足りなくなったら, サーバ増設で対処
    • 金さえあればスケールする
  • ただし, もしスケールしなかったらどうしよう
    • その時は, RDBMSに切り替えなければならないが...
    • 皆がMongaDBしか書けなくなったら, RDBMSが超高級製品になってしまうかも

参加した感想・反省・成果

  • 就職活動するなら, NoSQLでソーシャルアプリでも書いてiPadで面接官に見せろとのアドバイス
    • ハイ、書きます
  • 名刺を用意するべきでした
    • 学生の方も普通に持っています
  • とにかく, 楽しかったです
    • 初参加でも親しく接してくださいました
    • 社会人の中でも勉強会に参加されるのは1%ぐらいです
    • そんな人達と直接会話できる良い機会でした

その他