Miyazaki Resistanceを作ってみたよ

30
Miyazaki Resistance を作ってみたよ I've developed MiyazakiResistance

description

RubyKaigi2009 Lightning Talk. MiyazakiResistance

Transcript of Miyazaki Resistanceを作ってみたよ

Page 1: Miyazaki Resistanceを作ってみたよ

MiyazakiResistanceを作ってみたよ

I've developed MiyazakiResistance

Page 2: Miyazaki Resistanceを作ってみたよ

おおいしつかさ

Tsukasa OISHI

Page 3: Miyazaki Resistanceを作ってみたよ

食べロググルメサイトプログラマ

Tabelog.comReview site of great restaurantsProgrammer

Page 4: Miyazaki Resistanceを作ってみたよ

iPhoneアプリver2.0が出ました

I've releasediPhone applicationof Tabelog ver 2.0

Page 5: Miyazaki Resistanceを作ってみたよ

本題Main

Page 6: Miyazaki Resistanceを作ってみたよ

MiyazakiResistance?

Page 7: Miyazaki Resistanceを作ってみたよ

ActiveRecordのようにTokyo Tyrantを使うことができます

Library like ActiveRecord to use Tokyo Tyrant

Page 8: Miyazaki Resistanceを作ってみたよ

Tokyo Tyrant?

Page 9: Miyazaki Resistanceを作ってみたよ

Tokyo Cabinetとやりとりするためのネットワークインターフェース

The Package of network interface to Tokyo Cabinet.

Page 10: Miyazaki Resistanceを作ってみたよ

Tokyo Cabinet?

Page 11: Miyazaki Resistanceを作ってみたよ

KeyValueStrage

Page 12: Miyazaki Resistanceを作ってみたよ

Table構造

【Key】 id

【Value】 article_id : integer count : integer created_at : datetime

Page 13: Miyazaki Resistanceを作ってみたよ

記事ID100の昨日のアクセス数を取得する

Search access count of article-ID 100 yesterday.

Page 14: Miyazaki Resistanceを作ってみたよ

Ruby API

Page 15: Miyazaki Resistanceを作ってみたよ

TTとの接続

rdb = TokyoTyrant::RDBTBL.new

rdb.open(“localhost”, 1975)

Page 16: Miyazaki Resistanceを作ってみたよ

クエリの作成query = TokyoTyrant::RDBQRY.new(rdb)

query.addcond(“created_at”, TokyoTyrant::RDBQRY::QCNUMEQ, Time.local(2009, 7, 16).to_i)

query.addcond(“article_id”, TokyoTyrant::RDBQRY::QCNUMEQ, 100)

Page 17: Miyazaki Resistanceを作ってみたよ

クエリの作成query = TokyoTyrant::RDBQRY.new(rdb)

query.addcond(“created_at”, TokyoTyrant::RDBQRY::QCNUMEQ, Time.local(2009, 7, 16).to_i)

query.addcond(“article_id”, TokyoTyrant::RDBQRY::QCNUMEQ, 100)

Page 18: Miyazaki Resistanceを作ってみたよ

データの取得

article_100_count =   query.search.first

Page 19: Miyazaki Resistanceを作ってみたよ

メンドくさい...

orz

troublesomeness...orz

Page 20: Miyazaki Resistanceを作ってみたよ

いいものなのにもったいない!

Mottainai!

Page 21: Miyazaki Resistanceを作ってみたよ

MiyazakiResistance!

Page 22: Miyazaki Resistanceを作ってみたよ

ArticleCount.find( :first, :conditions => [“restaurant_id = ? created_at = ?”, 100, Time.local(2009, 7, 16))

簡単

Page 23: Miyazaki Resistanceを作ってみたよ

ArticleCountclass ArticleCount <  MiyazakiResistance::Base

set_server :localhost, 1975, :write set_column :restaurant_id, :integer set_column :count, :integer set_column :created_at, :datetime

end

Page 24: Miyazaki Resistanceを作ってみたよ

Replication

Page 25: Miyazaki Resistanceを作ってみたよ

set_server :master, 1975, :writeset_server :slave1, 1975, :readonlyset_server :slave2, 1975, :readonly

Page 26: Miyazaki Resistanceを作ってみたよ

DualMaster

Page 27: Miyazaki Resistanceを作ってみたよ

set_server :m1, 1975, :writeset_server :m2, 1975, :standby

Page 28: Miyazaki Resistanceを作ってみたよ

食べログでも使っているよ

・各レストランのアクセスカウント

・デュアルマスタ構成

・約1.8億PV

Page 29: Miyazaki Resistanceを作ってみたよ

geminstalltsukasaoishi-miyazakiresistance

Page 30: Miyazaki Resistanceを作ってみたよ

おしまいthanks!