溫馨提示×

溫馨提示×

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

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

數(shù)據(jù)庫中如何實現(xiàn)分庫分表

發(fā)布時間:2021-11-09 14:26:44 來源:億速云 閱讀:943 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫

這篇文章將為大家詳細講解有關(guān)數(shù)據(jù)庫中如何實現(xiàn)分庫分表,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

分片是解決數(shù)據(jù)庫存儲容量限制的直接途徑。分片包括垂直分片與水平分片兩種方式。

垂直分片

垂直分片又叫縱向分割,即以邏輯表為單位,把原有數(shù)據(jù)庫切分成多個數(shù)據(jù)庫。切分后不同的表存儲在不同的數(shù)據(jù)庫上。

垂直分片與業(yè)務(wù)架構(gòu)設(shè)計有密切的聯(lián)系。比如從業(yè)務(wù)領(lǐng)域?qū)ο到y(tǒng)進行架構(gòu)優(yōu)化,分成多個子業(yè)務(wù)系統(tǒng),各個子業(yè)務(wù)系統(tǒng)耦合度較低。子業(yè)務(wù)系統(tǒng)間以接口方式進行數(shù)據(jù)通信和數(shù)據(jù)交換。

垂直拆分后業(yè)務(wù)清晰,拆分規(guī)則明確,系統(tǒng)之間容易整合與擴展。一般用于數(shù)據(jù)庫上層架構(gòu)設(shè)計。

數(shù)據(jù)庫中如何實現(xiàn)分庫分表
圖1 
垂直分片示意圖 

水平分片

水平分片又叫橫向分割,即以邏輯表中的數(shù)據(jù)行記錄為單位,把原有邏輯數(shù)據(jù)庫切分成多個物理數(shù)據(jù)庫分片,表數(shù)據(jù)記錄分布存儲在各個分片上。

水平分片主要用業(yè)務(wù)架構(gòu)無法繼續(xù)細分,而數(shù)據(jù)庫中單張表數(shù)據(jù)量太大,查詢性能下降的場景。通過水平分片,即解決單庫容量問題,同時提高并發(fā)查詢性能。


數(shù)據(jù)庫中如何實現(xiàn)分庫分表

圖2 水平分片示意圖 

DDM實現(xiàn)了自動水平分片,應(yīng)用無需關(guān)心某個數(shù)據(jù)該存儲在哪一塊分片上。

對邏輯表水平分片需要依據(jù)一定的分片規(guī)則,例如一個訂單跟蹤系統(tǒng),我們選取訂單號(OrderId)作為拆分鍵,分別對“訂單流水表”、“訂單詳情表”以及“物流跟蹤表”進行水平拆分,拆分規(guī)則為對鍵值Hash后求模,則分片計算規(guī)則如下:

H(Key(OrderId)) = Hash(Key(OrderId))%N

其中,N表示一共有N個數(shù)據(jù)分片,H(Key(OrderId))表示該訂單經(jīng)過訂單號Hash并求模后存儲的分片編號。

數(shù)據(jù)庫中如何實現(xiàn)分庫分表

圖3 分片后數(shù)據(jù)存儲示意圖 

關(guān)于“數(shù)據(jù)庫中如何實現(xiàn)分庫分表”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

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

AI