2009年12月1日

レポ「Shibuya Perl Mongersテクニカルトーク#12 NoSQL特集」

Shibuya Perl Mongersテクニカルトーク#12 "NoPerl, NoSQL, NoKVS"
テーマ - "Not only Perl, Not only SQL, Not only KVS"
日時 - 2009年11月30日(月) 18:30-21:00 (18:00 開場)
会場 - グラントウキョウサウスタワー23F リクルート本社サウスホール
住所 - 東京都千代田区丸の内1-9-2 (JR東京駅 八重洲南口すぐ)

http://atnd.org/events/2242
http://shibuya.pm.org/blosxom/techtalks/200911.html
UST http://www.ustream.tv/channel/mtl-live

18:00 【開場時間】 会場2Fロビーの受付までお越しください
  エレベータが展望+速い「人がゴミのようだ」気分

18:07 到着
  席確保、トイレ・自販機の位置確認(やっぱり喫煙所ない)、帰りエレベータまでの通路確認、セキュリティゲートにカードを当ててみる→開いた

18:30 【特別講演】 開会の挨拶
  諸注意「入場の時のカードキーは帰りに必ず返して」

18:35 宮川達彦(miyagawa) - "Tatsumaki" I/O bound HTTP clients in web frameworks
  PSGI=Perl Server Gateway Interface ≒ Python WSGI
  実装 Plack
  Non-Blacking実装 psgi.streaming
  ↓Frameworkのほとんどは非同期を考慮していないので作った
  Framework実装 Tatsumaki(AnyEvent::*) ≒ Python Tornado
  なぜ非同期か?→処理のボトルネックはCPUよりほとんどI/O待ち。非同期でこの待ちをなくす

19:00 休憩5分

19:05 【特別企画】NoSQL vs. NoKVS ライトニングディスカッション
  平林幹雄(mikio) - Tokyo (Cabinet|Tyrant)
    TCって何?→DBMのモダンな実装
    ハッシュをファイルに保存
    完全一致のみ、なので速い
    トランザクションない、複数レコードない→SQLの代替えにならない
    チューニングのコツ:バケット配列数と拡張メモリ
    TTって何?→TCをRPCでアクセス memcachedの永続化
  山田浩之(mogwaing) - Lux IO 的な何か
    Lux IO=DBM、B+木、ハッシュなし
    全文検索エンジン「Lux」のため
    全文検索なので長い値を使う。索引部はオンメモリ、データ部はOSのページキャッシュまかせ
  トランザクションなし、今後実装予定
    Perlで呼べる
  鶴岡直也(halt) - 毎秒11万回更新できるのはRedisだけ
    利用者視点でRedisを語る
    Redis=「使いやすいKVS」
    インストールしやすい→wgetしてmake(configure不要)
    速度→50クライアントが同時10万リクエストで高速
    ライブラリ充実→メジャーなLLのほとんどで呼べる
    使いやすい→put/get以外にコマンドが豊富
  古橋貞之(frsyuki) - えとらぼで kumofs 作って運用してみた
    kumofs=分散KVS、いつでもサーバを増やせる
    Manager、Server、Gatewayで構成
    Manager→kumofs全体の制御(Serverを立てたり止めたり)
    Server→複数あり、データストアする
    Gataway→APサーバ側にあり、Appからのリクエストを送受
    AppとGatewayはmemcashedプロトコル(Appの修正不要)
    GatewayとServerは非同期RPC
    ボトルネックがあるとすればGatewayのCPU(Appのリクエストをまとめたり、Serverに振り分けているのでCPUを食う)
    実例:えとらぼの写真のメタデータ
  太田一樹(kzk) - Hadoop/hBase を動かしてみた
    hBase=BigTableのOSSクローン、hadoopで動く
    カラムストア、分散
    カラムストア=raw(≒PK)、カラムファミリー(≒スキーマ)
    カラムを同じ語句でグルーピング(ファミリー)で高速化
    cloudera.comがメンテ、yumで導入可
  小泉守義(moriyoshi) - golang で KVS 作ってみた
    GoでLVS作ってみる
    サーバソケット作成→パッケージが面倒みる
    セッション維持→Pollerは書けない、ルーチン回してハンドリング
    プロトコルのハンドリング→ビットシフトしてごりごり(Pack/Unpackない)
    バックエンド→とりあえずビルトインのmap使う
    複数のセッションの各ルーチンで送受、バックエンドもルーチンを回し、ここに投入する(MQ?)のでmutex不要
  奥一穂(kazuho) - NoKVS な RDBMS sharding 作ってみた
    Oracleじゃダメなの?→商用高いスケールアウトしない
    MySQLは?単体では性能悪くない
    スケールアウトできないのが課題?
    企業向けの需要
    ・書き込み多い
    ・トランザクション必要
    ・根性はNG
    →OSS RDMSをスケールアウトしましょう
    Incline=各サーバに配置したDDLを読んでアクセス先を分散(DBはInnoDB)
    Pacific=Inclineを制御(安全確保、高速、SPOF排除)
  斯波健徳(shiba) - Spider Storage Engine 作ってみた
    MySQLストレージエンジンとしてSpider〜を作った
    アプリからは普通のMySQLテーブルにアクセスする感覚でOK
    Virtical Patitioning=Spider〜を分散・制御する
    Spider〜とVirtical〜を組み合わせて、Amazon RDSの限界越えに使える
    現在、クラスタリングを実装中
    実例:チームラボの全文検索

20:30 休憩10分

20:40 LT
  - Perlの魅力
    Perl5ではsyntaxもいじれる
  - メタプログラミング
    高度に発達したPerlはRubyと区別がつかない
  - Ajaxテスト
    JSTAPd
  - CouchDB
    ドキュメント指向 紙一枚にまとめた時に不自然ではないデータのストアが得意

21:00 終了

感想
- Perlは相変わらず変態だった
  No Perlerの人にはLT前半はドン引きレベルw
- kumofsは面白そう
  Appからはmemcached感覚で意識しなくて良いし
- CouchDBはウェブアプリを手軽に作りたい時に便利かも
  JavaScriptがクライアントになって直接CouchDBとやりとりできる(URIでアクセス)

0 件のコメント: