Re: [系統] 正規/反正規化的取捨
這是alpe前輩要回文卻不小心寄到我信箱的文,貼出來和大家分享
作者 alpe (薛丁格的貓)
標題 Re: [系統] 正規/反正規化的取捨
時間 Fri Jun 8 21:00:56 2012
───────────────────────────────────────
※ 引述《powerup (東刀輪一流)》之銘言:
: 各位前輩好,有些關於資料庫規劃的問題想請問一下
: 小弟目前的專案有點像會員制的google reader 一樣,使用者可以自訂閱其想要的網站
... ...
: 但是現在主管想要增進我們資料庫的效能,不管空間浪費(因為現在硬碟很便宜)
: 所以他要求用反正規化的方式,亦即每一個使用者都用一個資料表
不是這樣玩的啊... DBA會想死的, 你們之後也會想死.
1. 是否有要做統計分析? 一堆table資料要匯整... 想到就累.
2. 會員舊資料的清除? 又是一個一個跑.
3. 資料庫換server,升級? (不熟)但dump出來的應該大很多很多.
4. 未來架構 "0" 擴充性. 要改就 N 個table!!! 停機要停多久?
: 彼此訂閱的網站互不干涉,資料重複沒差
: 這樣子資料存取會比較快,因為不用做where查詢,使用者越多越明顯(跟原先的結構比
)
join ?
: 而且同步也方便(我們之後會有許多台伺服器,會有資料庫同步問題)
: 因為原先的結構是儲存id,如果同一個網站在不同伺服器有不同的id同步會很麻煩
訂閱不是常常發生 insert 比例比較低, 其實用 multi-master還ok
MM 下id同步好解決. M1 pkey+3 M2 pkey+5 M3 pkey+7. 質數很多....
用master-slaver 差個幾秒也沒人知道(fb表示,你知道了能咬我嗎?)
: 但是這樣的話,資料庫裡會有一堆user table耶!
: 又,一般網路遊戲或其他有會員制的的專案是怎麼管理龐大的會員資料的啊
: (約數十萬筆以上,而且會員數會一直增加)?
.. ...
: 我朋友說mysql一個資料表要維持最高效能,所儲存的資料大約只有十萬筆
我公司比較小的資料庫... 7M個會員. 大點的... 千萬級(國際的色情網站啊).
用 MySQL , 我現在的案子小的. 7M個會員.
每個會員大概30個屬性...
搜尋有用到index的話. 0.00xx sec, 沒用到 index 1~2s.
好好弄好index才是正途.
以你的case 抓一筆資料出來做join.... 真的很快.
: 就算是分散式資料庫,也只是把不同table分散到不同伺服器而已啊
誰說得?? 同一個table再不同server 也是可以減少 slow query 帶來的災難.
: 所以可以每十萬筆資料換一個資料表,也就是有user_table1, user_table2之類的
: 這樣在做查詢時,還要先作數學運算看這個使用者是在哪個資料表......
google : mysql partition
不用... mysql 會幫你做好, 但舊寫法得卻會是這樣
--
Exactly. For that one fraction of a second, you were open to options
you had never considered. THAT is the exploration that awaits you:
not mapping stars and studying nebulae,but
charting the unknown possibilities of existence.
Star Trek S7E26 "All Good Thing"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.105.62
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.209.67
※ 編輯: powerup 來自: 220.128.209.67 (06/11 10:35)
推
06/11 12:34, , 1F
06/11 12:34, 1F
討論串 (同標題文章)