BPStudy#25 : ATNDのメモ。
色々まちがって解釈してるところがあるかも知れませんが、間違いを発見したらDISらずに優しく指摘してください ><
サイボウズ・ラボ 奥一穂さん
Kazuho@Cybozu Labs
Happy Optimization
- 正しい最適化
Scaling?
- 「スケール」とは
- ムーアの法則、ファンの法則など
- 確かに向上している
- スケールしないもの
- HDDのレイテンシ
- インターネットのレイテンシ
- 4Gbpsって速いの?
- サーバ1台でも速度だけなら出せる
- HDDからのランダムリードだと大変
- 遅いのはHDD?
- なぜ「スケールアウト」が流行るのか
- ソフトウェア製品からソフトウェアサービスへ
- コミュニケーションツールは多人数間の疎なソーシャルグラフ
- 比較的スケールアウトしやすい
- 代表的な「スケールアウト」技術
- 3層構成
- HTTPサーバ、アプリケーションサーバ、ストレージ
- 規模の拡大 V.S. ムーアの法則
- いずれ「スケールアップ」の時代がくることを念頭においておきましょう
Incline & Pacific
- 大規模ウェブサービスの課題:データベースのスケールアウト
- CAP定理っておいしいの?
- Consisteny, Availability, Partition-toleranceのうち満たせるのは2つまで
- Partition-tolerance:P2Pでは必要だが、データセンタ内では実質的に不要では?
- Incline & Pacificの目指すもの:RDBMSと分散KVSのいいとこどり
- 動的パーティショニング
- Range-based partitioningで障害の影響局所化
- SQLによる柔軟なクエリ
- Inclineはノード間のデータ同期に専念する
- PacificはRDBMSのShardに専念する
A Clever Way to Scale-out a Web Application
- RDB sharding
- eventual consistency、2-phase commitといった考え方
- 問題点
- クエリが複雑になる
- ノード間のconsistency
- 動的なスケーリング
- database triggerとは
- http://developer.cybozu.co.jp/kazuho/2009/06/mysql-innodb-se.html
- SQL実行時に処理を指定し、最適化などを行うことができる(?)
- Inclineはクエリの複雑性、consistencyの問題を解決する
- triggerによって自動的にshardされたDBに書き込みを行ってくれる
- 最初にトランザクションでQueueに書き込み、それを使ってプロセスを実行
- ノード内は同期的に、ノード間は非同期的に
- 即時反映が必要な場合は他のものを使うべき、ということになるらしい
- 定義ファイルを使用して転送方法を指定
- 例
- Range-based sharding V.S. hash-based
- Range-basedの方が色々やりやすくて便利
- Pacific
- DBIx::ShardManager
- shardingされたDBを使うためのモジュール
- Incline, Pacificはearty beta、DBIx::ShardManagerはまだalphaです
休憩
デモ
- SQLライブコーディングがスゴかったw
A Better Cached
- Memcahcedの利点と欠点
- そこでMycached