Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
playで複数DBする Scalive#1.414 Takashi Abe Mynet Inc. 01/25 2015
Slide 2
Slide 2 text
おまえだれよ @takashabe PHPでソシャゲ作ってます ヘビィボウガン使い HR250 海未ちゃん推し
Slide 3
Slide 3 text
DBサーバのスケールアウトど うしてますか
Slide 4
Slide 4 text
playでMySQLをスケールアウ トする
Slide 5
Slide 5 text
DBサーバのスケールアウト 手法
Slide 6
Slide 6 text
マスタ分割 DB、テーブルを複数サーバに分割し、クエリに応じて動 的に問合せ先サーバを選択する 分割方式より垂直分割/水平分割がある アプリケーション側での実装が多い
Slide 7
Slide 7 text
垂直分割
Slide 8
Slide 8 text
垂直分割 関係性の薄いデータをそれぞれ異なるDBに分散 接続先DBを変えるだけなので大して実装コストはない (例) ユーザデータ系 ログ系 マスタデータ系
Slide 9
Slide 9 text
垂直分割イメージ
Slide 10
Slide 10 text
水平分割
Slide 11
Slide 11 text
水平分割 複数サーバで同じDBを用意し、キーとなるデータによっ て格納先を分割する DB名から一意に格納先のテーブルを特定出来ないの でサーバ振り分けの実装が重くなりがち キーの余剰、ハッシュ値などによって分割を行う
Slide 12
Slide 12 text
水平分割 分割例 userテーブル、user_idをキーにして分割する user_idを100で割った余剰をテーブル名のサフィック スにする user_00 ~ user_99のテーブルに分割可能 サーバA: user_00 ~ user_49 サーバB: user_50 ~ user_99
Slide 13
Slide 13 text
水平分割イメージ
Slide 14
Slide 14 text
playで水平分割する
Slide 15
Slide 15 text
auroraを使う例
Slide 16
Slide 16 text
auroraとは https://github.com/gree/aurora データソース・シャーディング機能 事前に定義したデータソース群とリゾルバによって、 ヒントに応じたデータソースを解決できます テーブル名・シャーディング機能 事前に定義したリゾルバによって、ヒントに応じたテー ブル名を解決できます。
Slide 17
Slide 17 text
テーブル名・シャーディング 機能で水平分割する
Slide 18
Slide 18 text
テーブル構成
Slide 19
Slide 19 text
データ
Slide 20
Slide 20 text
クラスタの定義 (conf/database.conf)
Slide 21
Slide 21 text
DBαʔό܈ͱରԠ͢ΔDB໊(user)Λఆٛ͢Δ クラスタの定義 (conf/database.conf)
Slide 22
Slide 22 text
テーブル名の定義 (conf/database.conf)
Slide 23
Slide 23 text
テーブル名の定義 (conf/database.conf) ׂ͢ΔςʔϒϧͷύλʔϯΛఆٛ͢Δ
Slide 24
Slide 24 text
クラスタの解決 (app/models/DataUser.scala)
Slide 25
Slide 25 text
クラスタの解決 (app/models/DataUser.scala) ͲͷDBαʔόʹͭͳ͛Δ͔ղܾ͢Δ
Slide 26
Slide 26 text
テーブル名の解決 (app/models/DataUser.scala)
Slide 27
Slide 27 text
テーブル名の解決 (app/models/DataUser.scala) ςʔϒϧͷαϑΟοΫεΛղܾ͢Δ
Slide 28
Slide 28 text
demo
Slide 29
Slide 29 text
サンプル https://github.com/takashabe/play-aurora
Slide 30
Slide 30 text
まとめ
Slide 31
Slide 31 text
水平分割つらいのでやらな いほうが良いと思います