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