SlideShare a Scribd company logo
1 of 21
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
おしまい

More Related Content

Similar to Tokyotyrantについて

MySQL最新動向と便利ツールMySQL Workbench
MySQL最新動向と便利ツールMySQL WorkbenchMySQL最新動向と便利ツールMySQL Workbench
MySQL最新動向と便利ツールMySQL Workbenchyoyamasaki
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
Facebookのリアルタイム Big Data 処理
Facebookのリアルタイム Big Data 処理Facebookのリアルタイム Big Data 処理
Facebookのリアルタイム Big Data 処理maruyama097
 
LineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value StorageLineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value StorageSho Nakazono
 
かんたんCMS Picoについて
かんたんCMS PicoについてかんたんCMS Picoについて
かんたんCMS Picoについて高見 知英
 
論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingens論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingensmmisono
 

Similar to Tokyotyrantについて (7)

MySQL最新動向と便利ツールMySQL Workbench
MySQL最新動向と便利ツールMySQL WorkbenchMySQL最新動向と便利ツールMySQL Workbench
MySQL最新動向と便利ツールMySQL Workbench
 
AWSによるグラフDB構築
AWSによるグラフDB構築AWSによるグラフDB構築
AWSによるグラフDB構築
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
Facebookのリアルタイム Big Data 処理
Facebookのリアルタイム Big Data 処理Facebookのリアルタイム Big Data 処理
Facebookのリアルタイム Big Data 処理
 
LineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value StorageLineairDB: Fast and Embedded Transactional Key-Value Storage
LineairDB: Fast and Embedded Transactional Key-Value Storage
 
かんたんCMS Picoについて
かんたんCMS PicoについてかんたんCMS Picoについて
かんたんCMS Picoについて
 
論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingens論文輪読: Coordinated and Efficient Huge Page Management with Ingens
論文輪読: Coordinated and Efficient Huge Page Management with Ingens
 

More from Tsukasa Oishi

はてブ砲をくらったときのお話
はてブ砲をくらったときのお話はてブ砲をくらったときのお話
はてブ砲をくらったときのお話Tsukasa Oishi
 
奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法Tsukasa Oishi
 
かんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみましたかんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみましたTsukasa Oishi
 
食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話Tsukasa Oishi
 
Miyazaki Resistanceを作ってみたよ
Miyazaki Resistanceを作ってみたよMiyazaki Resistanceを作ってみたよ
Miyazaki Resistanceを作ってみたよTsukasa Oishi
 
はてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよはてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよTsukasa Oishi
 

More from Tsukasa Oishi (6)

はてブ砲をくらったときのお話
はてブ砲をくらったときのお話はてブ砲をくらったときのお話
はてブ砲をくらったときのお話
 
奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法奥さんとプログラミングを両立させる方法
奥さんとプログラミングを両立させる方法
 
かんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみましたかんたんな検索エンジンをつくってみました
かんたんな検索エンジンをつくってみました
 
食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話食べログで動いている自作ライブラリのお話
食べログで動いている自作ライブラリのお話
 
Miyazaki Resistanceを作ってみたよ
Miyazaki Resistanceを作ってみたよMiyazaki Resistanceを作ってみたよ
Miyazaki Resistanceを作ってみたよ
 
はてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよはてなダイアリーキーワードをつくってみたよ
はてなダイアリーキーワードをつくってみたよ
 

Tokyotyrantについて