溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫(kù)拆分的方式有哪幾種

發(fā)布時(shí)間:2020-07-31 10:13:10 來源:億速云 閱讀:306 作者:Leah 欄目:互聯(lián)網(wǎng)科技

數(shù)據(jù)庫(kù)拆分的方式有哪幾種?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

數(shù)據(jù)庫(kù)拆分有:1、按功能劃分【垂直切分】,將不同功能相關(guān)的表放到不同的數(shù)據(jù)庫(kù)中,這樣做的好處是非常直觀;2、按表中某一字段值的范圍劃分【水平切分】,當(dāng)伴隨著某一個(gè)表的數(shù)據(jù)量越來越大,以至于不能承受的時(shí)候,就需要對(duì)它進(jìn)行進(jìn)一步的切分。

數(shù)據(jù)庫(kù)做拆分的幾種方式:

1.按功能劃分(垂直切分)

將不同功能相關(guān)的表放到不同的數(shù)據(jù)庫(kù)中,這樣做的好處是非常直觀。但當(dāng)某一部分的功能其數(shù)據(jù)量或性能要求超出了可控的范圍,就需要繼續(xù)對(duì)其進(jìn)行深入的再切分。

2.按表中某一字段值的范圍劃分(水平切分)

當(dāng)伴隨著某一個(gè)表的數(shù)據(jù)量越來越大,以至于不能承受的時(shí)候,就需要對(duì)它進(jìn)行進(jìn)一步的切分。一種選擇是根據(jù)key 的范圍來做切分,譬如ID 為 1-10000的放到A上,ID 為10000~20000的放到B。這樣的擴(kuò)展就是可預(yù)見的。另一種是根據(jù)某一字段值來劃分,譬如根據(jù)用戶名的首字母,如果是A-D,就屬于A,E-H就屬于B。這樣做也存在不均衡性,當(dāng)某個(gè)范圍超出了單點(diǎn)所能承受的范圍就需要繼續(xù)切分。還有按日期切分等等。

優(yōu)點(diǎn):?jiǎn)伪泶笮】煽?,天然水平擴(kuò)展

缺點(diǎn):無法解決集中寫入瓶頸的問題。

3.基于hash的切分

一般采用mod來切分,一開始確定切分?jǐn)?shù)據(jù)庫(kù)的個(gè)數(shù),通過hash取模來決定使用哪臺(tái)。這種方法能夠平均地來分配數(shù)據(jù),但是伴隨著數(shù)據(jù)量的增大,需要進(jìn)行擴(kuò)展的時(shí)候,這種方式無法做到在線擴(kuò)容。每增加節(jié)點(diǎn)的時(shí)候,就需要對(duì)hash 算法重新運(yùn)算。

所以采用這種方法推薦采用mod 2^n這種一致性哈希

以點(diǎn)評(píng)統(tǒng)一訂單庫(kù)為例,分庫(kù)分表的方案是32*32的,即通過userId后四位mod 32分到32個(gè)庫(kù)中,同時(shí)再將userId后四位div 32 mod 32將每個(gè)庫(kù)分為32個(gè)表,共計(jì)分為1024張表。其線上部署情況為8個(gè)集群(主從),每個(gè)集群4個(gè)庫(kù)

4.基于路由表的切分

前面的幾種方式都是根據(jù)應(yīng)用的數(shù)據(jù)來決定操作的,基于路由表的切分是一種更加松散的方法。它單獨(dú)維護(hù)一張路由表,根據(jù)用戶的某一屬性來查找路由表決定使用哪個(gè)數(shù)據(jù)庫(kù),這種方式是一種更加通用的方案。

優(yōu)點(diǎn):id和庫(kù)的mapping算法可以隨意更改

缺點(diǎn):可能引入額外的單點(diǎn)

看完上述內(nèi)容,你們掌握數(shù)據(jù)庫(kù)拆分的方式有哪幾種的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI