1、談數(shù)據(jù)庫(kù)分布式
其核心內(nèi)容無(wú)非就是數(shù)據(jù)切分(Sharding),以及切分后對(duì)數(shù)據(jù)的定位、整合工作,解決單一數(shù)據(jù)庫(kù)或數(shù)據(jù)表因數(shù)據(jù)量過(guò)大而導(dǎo)致的性能瓶頸問(wèn)題。這里有必要再做一個(gè)澄清,本文談的數(shù)據(jù)庫(kù)分布式并非分布式數(shù)據(jù)庫(kù),前者不關(guān)注數(shù)據(jù)細(xì)節(jié)的存儲(chǔ)組織問(wèn)題,而是仍然在已有的MySQL、ORACLE等成熟數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)上進(jìn)行的一系列數(shù)據(jù)操作調(diào)度。后者分布式數(shù)據(jù)庫(kù)則是集數(shù)據(jù)存儲(chǔ)、管理以及分布式協(xié)調(diào)與計(jì)算為一體的數(shù)據(jù)庫(kù)系統(tǒng)
2、數(shù)據(jù)切分
數(shù)據(jù)切分就是把數(shù)據(jù)分散存放到多個(gè)數(shù)據(jù)庫(kù)或多個(gè)表中,使得單臺(tái)主機(jī)中的數(shù)據(jù)量變小,使得通過(guò)擴(kuò)充主機(jī)數(shù)量即可提升數(shù)據(jù)庫(kù)操作性能的目的。
- 數(shù)據(jù)切分可分為縱向和橫向兩種切分方法。
-
縱向切分就是根據(jù)業(yè)務(wù)耦合性,將關(guān)聯(lián)度低的不同表獨(dú)立建成不同的數(shù)據(jù)庫(kù)
- 例如:當(dāng)前A數(shù)據(jù)庫(kù)中有關(guān)于【客戶】【存款】【貸款】【支付】的各種表,拆分出來(lái)就是,將不同模塊的數(shù)據(jù)表分庫(kù)存儲(chǔ),模塊間互相互關(guān)聯(lián),如果有,就必須通過(guò)數(shù)據(jù)冗余和應(yīng)用層二次加工來(lái)解決。但若不能杜絕夸庫(kù)關(guān)聯(lián)查詢,則此路不通。
則縱向切分就是:- A數(shù)據(jù)庫(kù)【客戶】
- B數(shù)據(jù)庫(kù)【存款】
- C數(shù)據(jù)庫(kù)【貸款】
-
D數(shù)據(jù)庫(kù)【支付】
image.png
- 例如:當(dāng)前A數(shù)據(jù)庫(kù)中有關(guān)于【客戶】【存款】【貸款】【支付】的各種表,拆分出來(lái)就是,將不同模塊的數(shù)據(jù)表分庫(kù)存儲(chǔ),模塊間互相互關(guān)聯(lián),如果有,就必須通過(guò)數(shù)據(jù)冗余和應(yīng)用層二次加工來(lái)解決。但若不能杜絕夸庫(kù)關(guān)聯(lián)查詢,則此路不通。
-
橫向切分是根據(jù)表內(nèi)數(shù)據(jù)的邏輯關(guān)系,將同一個(gè)表按不同的條件拆分到多個(gè)數(shù)據(jù)庫(kù)或多個(gè)表中
-
橫向也就是在縱向切分的基礎(chǔ)上,進(jìn)行庫(kù)的多個(gè)復(fù)制。
image.png
-
-
3、相關(guān)中間件
1、mycat http://www.mycat.io/
2、cobar https://github.com/alibaba/cobar
cobar 快速開(kāi)始 https://github.com/alibaba/cobar/wiki/Quick-Start

