架構師速成8.4-分庫分表的關鍵點


我們還是由淺入深(這個詞我喜歡,你呢?)的討論一下,分庫分表的關鍵點(本故事純屬虛構,僅為搞笑):

  1. 當你的系統很小的時候,只有一個數據庫,每個表的主鍵都是自增的,你都不去關心主鍵變成了多少,反正db保證自增,小日子過的很是愜意。但愜意的日子總是短暫的,你因為DB宕機被老板fire 3次(見上一個故事)。
  2. 進入第4個公司的時候,你發糞塗牆,將集群改成主備HA,結果順利出任CTO,迎娶白富美,走向了人生巔峰。當然這中間也出過一些小插曲,比如:張三注冊時,剛點擊完注冊,DB主機宕機了。張三發現剛注冊的賬號不能登錄了,張三很生氣。你說這這不算啥,讓他重新注冊一下賬號吧。但是李四剛付款買了網站上一款價值9.98的玉鑲金的超級玉佩,剛過1秒,訂單就沒有了。李四不願意了,他還等着這個9.98的玉佩3天內升值500%大賺一筆呢。你靈機一動,我們寫一個數據訂正的程序吧,對於宕機丟失的數據進行訂正,另外加送李四同學一塊999的超級金樹葉。問題都擺平了,你果真是維護世界和平的正義使者!
  3. 由於只要9.98的超級玉佩口碑傳播太好了,有無數人等着購買,甚至有人肯出更高的價購買,但是我們是有操守的,只賣9.98,9.98你買不了吃虧,買不了上當,現在購買還可以....此處省略1000字廣告。於是網站的注冊用戶暴漲,數據庫時不時卡死。
    • 老板發飆了:“怎么回事,我造福全人類的大業,要毀在你手里,你馬上解決,要是解決不了,你就是人民公敵,社會敗類!我會讓無數大爺大媽一人一口唾沫吐死你!”。
    • 你:看來我們要分庫存儲了,一台數據庫,完全抵擋不住大爺大媽們的熱情啊,馬上給點經費吧。
    • 老板對你一陣痛罵:“這得多少金鑲玉啊,要不用金鑲玉付款吧”。
    • 你:老板英明。
  4. 又增加2台機器之后,突然發現你是的世界完全崩塌了。
    1. 哪些數據需要分庫呢?
    2. 原來數據怎么分到這2台機器上呢?
    3. 我查詢的時候怎么知道查哪一套集群?
    4. 自增主鍵太坑了,自增完都重復了,怎么辦?
    5. 原來的關聯查詢(我無數牛叉的sql),分庫之后怎么辦?
    6. 我的事務一致性怎么辦?
    7. 原來的count,sum,group怎么辦?
    8. 要是需要再分我怎么辦?但是你被fire3次之后,早已練成神功之-------------死豬不怕開水燙,既然天降大任於我,我就全力去搞,順便鄙視一下這個老板。
  5. let‘s google,我靠,有專門的資料,http://blog.csdn.net/column/details/sharding.html,還有專門的書籍《MySQL性能調優與架構設計》,照貓畫虎,大功告成。
    • 不明真相的群眾:這樣也太坑了,直接把最關鍵的略過了。退貨,退貨,揍他,揍他
    • 作者:我只是想告訴大家怎么思考,為什么會出現這些問題
    • 不明真相的群眾:狡辯,揍他
    • 作者:饒命啊,大俠,我是覺得寫起太費勁了。而且我也向大家展示了面向對象威力,這個分庫分表就是一個完整的對象,我只需要引用他就可以了
    • 不明真相的群眾:好像比較有道理,但是就是因為你敷衍,揍他
  6. 搞好之后,流量大增,老板心里樂開了花,對你大加稱贊,並獎勵了你一塊金鑲玉。
    • 老板:小子,我看好你!這塊金鑲玉就送給你,不日就升值1000倍,你就是大富翁了。
    • 你:呵呵,謝謝老板,老板英明
    • 老板:看你嘴甜,再送你10塊
    • 你:呵呵呵,證據到手
    • 你:警察局嗎,有人在詐騙
    • 老板:亞美蝶......,我是在造福全人類
    • 你:對不起,我是卧底!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM