大きい開発がはじまったので、
作りためた自作フレームワークを完成させよう~
と思ったんだけど、肝心のDB分割の部分がうまく整理できていないので、
そこらへんのメモ。
キーで分割するか、テーブルで分割するか
○テーブル分割
・IDテーブルはこのDBサーバ、blogテーブルはこのサーバみたいな。
さらに細かくblogテーブルのこのカラムはこのサーバみたいなやり方もあり。
・パーティション・マップを用意してテーブル<>サーバのマッピングをする。
・色々JOINとかが超めんどい
(そもそもその規模だとJOIN使うな的な話も多い)
・分割するなら例えばBlogテーブルのテキストカラムだけ
外だしするとかクエリベースで切り貼りするイメージ。
・シームレスなラッパーは書くのがきつそう
○キーで分割
・単純にID1~100はこのサーバ 200~300はこのサーバみたいな。
・キーの決め方がハードコーディングになると汎用性がさがるけどリソースをうまく使いきれそう
・キーの決め方がアルゴリかましてるとID100を別サーバに移動みたいなことがきつい。
だけどサーバ増設が伴っても比較的ラクに対応できそう。
・マッピングを使う どっかにID1はこのサーバって書いてく。
このマッピングが書いてあるDBの負荷は大丈夫なん?
・シームレスなラッパーは書くのが楽そう
○タイムスタンプベース
・そこまで必要なサイトってDbいくつ必要なんだというw
—-
テーブルで分割の場合よりも、キーで分割のほうが
サーバの拡張のイメージが付きやすいし、管理コストも楽そうだから
こっちを採用予定。
とりあえずログインサーバとメインDB1,メインDB2でわけようかな。
キーで分割して、マッピング使用、ログインサーバでマッピングさせてしまう予定
(ログインサーバの負荷がきになるけど)
あ あと自作フレームワークは neo という名前に!
(そういうとこだけ早いというw
参考サイト
http://www.itmedia.co.jp/enterprise/articles/0808/28/news013_1.html
http://itpro.nikkeibp.co.jp/article/NEWS/20060330/233820/