Miyazaki Resistanceを作ってみたよ

Preview:

DESCRIPTION

RubyKaigi2009 Lightning Talk. MiyazakiResistance

Citation preview

MiyazakiResistanceを作ってみたよ

I've developed MiyazakiResistance

おおいしつかさ

Tsukasa OISHI

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

Tabelog.comReview site of great restaurantsProgrammer

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

I've releasediPhone applicationof Tabelog ver 2.0

本題Main

MiyazakiResistance?

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

Library like ActiveRecord to use Tokyo Tyrant

Tokyo Tyrant?

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

The Package of network interface to Tokyo Cabinet.

Tokyo Cabinet?

KeyValueStrage

Table構造

【Key】 id

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

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

Search access count of article-ID 100 yesterday.

Ruby API

TTとの接続

rdb = TokyoTyrant::RDBTBL.new

rdb.open(“localhost”, 1975)

クエリの作成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)

クエリの作成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)

データの取得

article_100_count =   query.search.first

メンドくさい...

orz

troublesomeness...orz

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

Mottainai!

MiyazakiResistance!

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

簡単

ArticleCountclass ArticleCount <  MiyazakiResistance::Base

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

end

Replication

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

DualMaster

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

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

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

・デュアルマスタ構成

・約1.8億PV

geminstalltsukasaoishi-miyazakiresistance

おしまいthanks!