摘自:http://www.open-china.net/blog/10953.html
1. 什么是數(shù)據(jù)切分
將存放在同一個(gè)數(shù)據(jù)庫(kù)中為同一個(gè)應(yīng)用程序服務(wù)的數(shù)據(jù)分散存放到多個(gè)數(shù)據(jù)庫(kù)上面,以達(dá)到分散單臺(tái)設(shè)備負(fù)載的效果,并提高可用性。
2. 垂直切分
按照系統(tǒng)的模塊和功能切分。需要盡早作出切分
優(yōu)點(diǎn):
- 應(yīng)用程序模塊清晰,整合容易。
- 數(shù)據(jù)維護(hù)方便。
缺點(diǎn):
- 模塊間的數(shù)據(jù)表會(huì)有關(guān)聯(lián)。
- 數(shù)據(jù)量大的表仍有性能問(wèn)題。
- 表關(guān)聯(lián)無(wú)法在數(shù)據(jù)庫(kù)級(jí)別完成,要在程序中完成。
- 事務(wù)處理復(fù)雜。
- 不能過(guò)度切分(粒度適宜)
3. 水平切分
對(duì)大數(shù)據(jù)量的表按照某種規(guī)則進(jìn)行散列拆分。根據(jù)社區(qū)模塊、用戶類型、特定字段類別等。
優(yōu)點(diǎn):
- 表關(guān)聯(lián)基本能夠在數(shù)據(jù)庫(kù)端全部完成。
- 不會(huì)存在數(shù)據(jù)過(guò)量問(wèn)題
- 應(yīng)用程序端整體改動(dòng)小
- 事務(wù)處理簡(jiǎn)單
- 擴(kuò)展性限制小
缺點(diǎn):
- 切分規(guī)則復(fù)雜,很難有一個(gè)全面的切分規(guī)則
- 后期數(shù)據(jù)的維護(hù)難度復(fù)雜,手工定位數(shù)據(jù)難
- 應(yīng)用系統(tǒng)各模塊耦合度高,可能會(huì)對(duì)后面數(shù)據(jù)拆分造成困難
4. 聯(lián)合切分
通常先垂直切分,再對(duì)大表進(jìn)行水平切分。
交替進(jìn)行切分。
優(yōu)點(diǎn):
- 系統(tǒng)擴(kuò)展性最大化
- 避免各自缺陷
缺點(diǎn):
- 數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu)復(fù)雜
- 應(yīng)用程序架構(gòu)也復(fù)雜
- 整合方案
兩種解決方案:
a )每個(gè)應(yīng)用程序模塊中配置管理自己需要的一個(gè)或多個(gè)數(shù)據(jù)庫(kù),直接訪問(wèn)各個(gè)數(shù)據(jù)庫(kù),在模塊內(nèi)整合數(shù)據(jù)。
b) 通過(guò)中間代理層來(lái)統(tǒng)一管理數(shù)據(jù)源,后端數(shù)據(jù)庫(kù)集群對(duì)前端應(yīng)用程序透明
實(shí)現(xiàn)類別:
a) 自行開(kāi)發(fā)代理層
b) 使用數(shù)據(jù)庫(kù) Proxy
如 MySQL 的 Proxy 。實(shí)現(xiàn)連接路由、 Query 分析、 Query 過(guò)濾和修改,負(fù)載均衡,以及基本的 HA 機(jī)制。
c) 其他開(kāi)源中間件
6. 可能的問(wèn)題
a. 分布式事務(wù)問(wèn)題。
——使用小事務(wù),提高應(yīng)用程序的健壯性。
b. 跨節(jié)點(diǎn) Join 問(wèn)題
——使用數(shù)據(jù)庫(kù) Federated ( DB Link 等)
——使用應(yīng)用程序來(lái)處理(使用緩存等)
c. 跨節(jié)點(diǎn)合并排序分頁(yè)問(wèn)題
——使用數(shù)據(jù)庫(kù) Federated
——應(yīng)用程序
當(dāng) b 和 c 同時(shí)出現(xiàn)時(shí),比較難處理。
posted on 2011-06-23 16:14
zhangxl 閱讀(205)
評(píng)論(0) 編輯 收藏 所屬分類:
DB