• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Tokyotyrantについて
 

Tokyotyrantについて

on

  • 4,851 views

 

Statistics

Views

Total Views
4,851
Views on SlideShare
4,826
Embed Views
25

Actions

Likes
2
Downloads
5
Comments
0

2 Embeds 25

http://www.slideshare.net 24
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tokyotyrantについて Tokyotyrantについて Presentation Transcript

    • Tokyo Tyrant おおいしつかさ
    • Web サイトとは
    • “ データを処理してユーザに提供する、データへのインターフェースである”
    • データ 重要
    • Web アプリでの データの取り扱い RDBMS ■ 基本 ■ 頻繁な更新があると大変 ■ mixi の最終ログイン時刻の  更新は 10000qps! メモリ ■ 高速 ■ マシンが落ちたらデータも  消える
    • Tokyo Cabinet ■ Key-value ストレージ  ・ハッシュ  ・ B+ 木  ・固定長  ・テーブル ■ 高速  ・ memcached の半分ほど ■ 永続性  ・ファイル DB
    • Tokyo Tyrant ■ Tokyo Cabinet を複数プロセス、またリモート環境から使えるよ ■ レプリケーションが使えるよ ■ デュアルマスタも OK だよ ■ 10000 コネクションだってさばけるよ
    • 使いどころ ■ 頻繁に更新されるデータの管理 ■ memcached では保持できない大きなデータの管理 ■ 最新データの管理
    • なんでも Tokyo Tyrant を使えばいいわけじゃない
    • ■ key-value ストレージだし ■ テーブル DB のクエリはシンプル   ・ join はできない   ・検索条件はすべて AND の    絞り込み   ・ index は最初のひとつだけ それ、 RDBMS でできるよ
    • 使ってみる
    • ■ テーブル DB ■ レストランのアクセスカウント   restaurant_id => [:count, :date] ■ レストラン ID 「 100 」の店舗の昨日のアクセスカウントを取得する
    • rdb = TokyoTyrant::RDBTBL.new rdb.open(“localhost”, 1975) query = TokyoTyrant::RDBQRY.new(rdb) query.addcond(“”, TokyoTyrant::TDBQRY::QCNUMEQ, 100) query.addcond(“date”, TokyoTyrant::TDBQRY::QCNUMEQ, Date.new(2009,3,26).to_time.to_i) yesterday_count = query.search
    • メンドくさい ...orz
    • AR ライクなクラスを作ってみた
    • MiyazakiResistance なんで? Cabinet -> 内閣 Tyrant -> 傀儡
    • クラスの定義 require 'miyazakiresistance' Class RestaurantCount < MiyazakiResistance::Base set_server “localhost”, 1975, :write set_timeout 60 set_column :count, :integer set_column :date, :date, :index end
    • アクセスカウントの取得 yesterday_count = RestaurantCount.find(:first, :condition => [“id = ? date = ?”, 100, Date.new(2009,3,26)])
    •  簡単 !
    • sudo gem install tsukasaoishi-miyazakiresistance
    • おしまい