a better cached
TRANSCRIPT
A Better Cached
Cybozu Labs, Inc.Kazuho Oku
Memcached の利点と欠点
利点RDBMS の読込負荷低減 / 同時接続数が足りな
いスケールアウトするキャッシュ
欠点RDBMS との一貫性維持が不可能
クライアントがキャッシュを変更する限りは不可避問い合わせが複雑
Memcached に聞いて、なかったら RDBMS に問い合わせ
データが溢れるprimary storage として使えない
Sep 25 2009 A Better Cached 2
「 Memcached の利点」の前提
RDBMS がスケールアウトしないだから、読込負荷低減が必要だから、別途「スケールアウトするキャッ
シュ」が必要↓
Incline & Pacific で RDBMS をスケールアウト可能必要に応じて shard 分割 + セカンダリを増設すれば
いい
残る問題は、同時接続数あと、やっぱり SQL は遅いSep 25 2009 A Better Cached 3
遅いなら 捨ててしまえ SQL パーサー( 字余り )
Sep 25 2009 A Better Cached 4
Mycached
mysqld が memcached プロトコルを話せるようにする拡張テーブルの中身を memcached プロトコルで
getただしプライマリキーによる get 専用
書き込みは SQL で
Sep 25 2009 A Better Cached 5
Mycached – 図説
http://dev.mysql.com/doc/refman/5.1/en/pluggable-storage-overview.html を改変Sep 25 2009 A Better Cached 6
myca
ched
Mycached
デモ
Sep 25 2009 A Better Cached 7
Mycached – 実装
1,200 行くらいJSON, msgpack, 独自形式によるレス
ポンスPicoev を使用 (I/O イベント駆動ライ
ブラリ )MySQL の内部構造は、多数のスレッドによる並
行アクセスにむいていない ( というのが定説 )イベント駆動ライブラリで同時アクセス数を低
減get は軽いので、データ読込中に他の接続がブロック
しても問題ないSep 25 2009 A Better Cached 8
Mycached – ベンチマーク
SQL だと 40,000qps 程度
Sep 25 2009 A Better Cached 9
Mycached のアプローチにおける問題
負荷が平準化するわけではないMemcached はハッシュベースなので負荷平準
化
Sep 25 2009 A Better Cached 10
よりよいアプローチ ?
Sep 25 2009 A Better Cached 11
RDBMS
somecached
queriesinvalidation
(trigger-based?)
app server
queries
cached と RDBMS 間でクエリの転送と invalidation を実行