Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
playで複数DBする
Search
takashabe
January 24, 2015
Technology
0
1.6k
playで複数DBする
http://scalive.connpass.com/event/10643/
で話した内容です
takashabe
January 24, 2015
Tweet
Share
More Decks by takashabe
See All by takashabe
より良いターミナルでの生活を求めて
takashabe
0
25
OpenCensusでcustom context propagationとexporterを書いた話 / OpenCensus with custom context propagation and exporter
takashabe
0
1.5k
pubsub with concurrent
takashabe
1
840
社内ISUCONを開催した話
takashabe
0
1.5k
ISUCON大反省会
takashabe
0
1.8k
gitのブランチ戦略
takashabe
8
5.7k
サルでもわかるgit
takashabe
0
1.3k
MySQLで高トラフィックに立ち向かう
takashabe
0
1.7k
GitHubの良さ
takashabe
2
2.2k
Other Decks in Technology
See All in Technology
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
Terraform Stacks入門 #HashiTalks
msato
0
350
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
110
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
110
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
590
DMARC 対応の話 - MIXI CTO オフィスアワー #04
bbqallstars
1
160
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
GitHub's CSS Performance
jonrohan
1030
460k
Code Review Best Practice
trishagee
64
17k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Being A Developer After 40
akosma
86
590k
It's Worth the Effort
3n
183
27k
Automating Front-end Workflow
addyosmani
1366
200k
Making Projects Easy
brettharned
115
5.9k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Visualization
eitanlees
145
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Transcript
playで複数DBする Scalive#1.414 Takashi Abe Mynet Inc. 01/25 2015
おまえだれよ @takashabe PHPでソシャゲ作ってます ヘビィボウガン使い HR250 海未ちゃん推し
DBサーバのスケールアウトど うしてますか
playでMySQLをスケールアウ トする
DBサーバのスケールアウト 手法
マスタ分割 DB、テーブルを複数サーバに分割し、クエリに応じて動 的に問合せ先サーバを選択する 分割方式より垂直分割/水平分割がある アプリケーション側での実装が多い
垂直分割
垂直分割 関係性の薄いデータをそれぞれ異なるDBに分散 接続先DBを変えるだけなので大して実装コストはない (例) ユーザデータ系 ログ系 マスタデータ系
垂直分割イメージ
水平分割
水平分割 複数サーバで同じDBを用意し、キーとなるデータによっ て格納先を分割する DB名から一意に格納先のテーブルを特定出来ないの でサーバ振り分けの実装が重くなりがち キーの余剰、ハッシュ値などによって分割を行う
水平分割 分割例 userテーブル、user_idをキーにして分割する user_idを100で割った余剰をテーブル名のサフィック スにする user_00 ~ user_99のテーブルに分割可能 サーバA: user_00
~ user_49 サーバB: user_50 ~ user_99
水平分割イメージ
playで水平分割する
auroraを使う例
auroraとは https://github.com/gree/aurora データソース・シャーディング機能 事前に定義したデータソース群とリゾルバによって、 ヒントに応じたデータソースを解決できます テーブル名・シャーディング機能 事前に定義したリゾルバによって、ヒントに応じたテー ブル名を解決できます。
テーブル名・シャーディング 機能で水平分割する
テーブル構成
データ
クラスタの定義 (conf/database.conf)
DBαʔό܈ͱରԠ͢ΔDB໊(user)Λఆٛ͢Δ クラスタの定義 (conf/database.conf)
テーブル名の定義 (conf/database.conf)
テーブル名の定義 (conf/database.conf) ׂ͢ΔςʔϒϧͷύλʔϯΛఆٛ͢Δ
クラスタの解決 (app/models/DataUser.scala)
クラスタの解決 (app/models/DataUser.scala) ͲͷDBαʔόʹͭͳ͛Δ͔ղܾ͢Δ
テーブル名の解決 (app/models/DataUser.scala)
テーブル名の解決 (app/models/DataUser.scala) ςʔϒϧͷαϑΟοΫεΛղܾ͢Δ
demo
サンプル https://github.com/takashabe/play-aurora
まとめ
水平分割つらいのでやらな いほうが良いと思います