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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takashabe
January 24, 2015
Technology
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
playで複数DBする
http://scalive.connpass.com/event/10643/
で話した内容です
takashabe
January 24, 2015
More Decks by takashabe
See All by takashabe
より良いターミナルでの生活を求めて
takashabe
0
73
OpenCensusでcustom context propagationとexporterを書いた話 / OpenCensus with custom context propagation and exporter
takashabe
0
1.9k
pubsub with concurrent
takashabe
1
960
社内ISUCONを開催した話
takashabe
0
1.8k
ISUCON大反省会
takashabe
0
2k
gitのブランチ戦略
takashabe
8
6.1k
サルでもわかるgit
takashabe
0
1.7k
MySQLで高トラフィックに立ち向かう
takashabe
0
1.9k
GitHubの良さ
takashabe
2
2.3k
Other Decks in Technology
See All in Technology
Digitization部 紹介資料
sansan33
PRO
2
7.8k
『自分で判断できるか』を基準に、プロダクトのハンズオン研修でAI利用の線を引いてみた / Where We Drew the Line on AI in Hands-on Training
honyanya
1
440
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
490
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
510
MCPを待つな、パスキーを拡げよう(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
350
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
310
Claude Codeで開発以外の業務も爆速化しよう!
minorun365
PRO
11
9k
フィジカルAIの知識ゼロの僕でも AIを使えばここまでできた
tatsuya1970
0
200
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
130
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
0
170
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
1
880
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
Technical Leadership for Architectural Decision Making
baasie
3
540
Prompt Engineering for Job Search
mfonobong
0
420
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
310
Building Adaptive Systems
keathley
44
3.2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Product Roadmaps are Hard
iamctodd
55
12k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Pragmatic Product Professional
lauravandoore
37
7.4k
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
まとめ
水平分割つらいのでやらな いほうが良いと思います