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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takashabe
January 24, 2015
Technology
1.6k
0
Share
playで複数DBする
http://scalive.connpass.com/event/10643/
で話した内容です
takashabe
January 24, 2015
More Decks by takashabe
See All by takashabe
より良いターミナルでの生活を求めて
takashabe
0
70
OpenCensusでcustom context propagationとexporterを書いた話 / OpenCensus with custom context propagation and exporter
takashabe
0
1.8k
pubsub with concurrent
takashabe
1
950
社内ISUCONを開催した話
takashabe
0
1.7k
ISUCON大反省会
takashabe
0
2k
gitのブランチ戦略
takashabe
8
6.1k
サルでもわかるgit
takashabe
0
1.6k
MySQLで高トラフィックに立ち向かう
takashabe
0
1.8k
GitHubの良さ
takashabe
2
2.3k
Other Decks in Technology
See All in Technology
R&D 祭 2024 UE5で絵コンテ・作画の制作支援ツールをつくる話
olmdrd
PRO
0
140
Claude Code で使える DuckDB Skills を試してみた / DuckDB Skills and Claude Code
masahirokawahara
1
150
Swift Sequence の便利 API 再発見
treastrain
1
280
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
100k
「背中を見て育て」からの卒業 〜専門技術としてのテスト設計を軸に、品質保証のバトンを繋ぐ〜 #genda_tech_talk
nihonbuson
PRO
3
1.4k
Purview 勉強会報告 Microsoft Purview 入門しようとしてみた
masakichixo
1
410
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
5
1.4k
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
340
CyberAgent YJC Connect
shimaf4979
1
180
Redmine次期バージョン7.0の注目新機能解説 — UI/UX強化と連携強化を中心に
vividtone
1
120
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
880
サイボウズ、プラットフォームエンジニアリング始めるってよ ― プラットフォームチームの事業貢献と組織アラインメントの強化
ueokande
0
110
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
310
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
130
We Are The Robots
honzajavorek
0
230
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
230
From π to Pie charts
rasagy
0
180
Discover your Explorer Soul
emna__ayadi
2
1.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
920
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
まとめ
水平分割つらいのでやらな いほうが良いと思います