Tokyotyrantについて

3,808 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,808
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Tokyotyrantについて

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

×