謝振華



摘要:隨著信息技術(shù)和社會(huì)的進(jìn)步,互聯(lián)網(wǎng)用戶以井噴的方式增長(zhǎng),不斷增長(zhǎng)的數(shù)據(jù)要存儲(chǔ)在數(shù)據(jù)庫(kù)中,原先單個(gè)數(shù)據(jù)庫(kù)就可以存儲(chǔ)用戶數(shù)據(jù),現(xiàn)在需要更多的數(shù)據(jù)庫(kù)才能存儲(chǔ)用戶數(shù)據(jù),那么基于分布式的數(shù)據(jù)庫(kù)應(yīng)用就產(chǎn)生了。將數(shù)據(jù)庫(kù)進(jìn)行分庫(kù)與分表完成數(shù)據(jù)存儲(chǔ),也是目前數(shù)據(jù)存儲(chǔ)的重要方式。本文提出了基于分布式的數(shù)據(jù)庫(kù)分庫(kù)與分表的策略,通過該策略,可以降低服務(wù)器成本,提高企業(yè)競(jìng)爭(zhēng)力。
關(guān)鍵詞:分庫(kù);分表;數(shù)據(jù)庫(kù)
中圖分類號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)14-0060-01
1引言
在分布式系統(tǒng)中的某些功能模塊數(shù)據(jù)的存儲(chǔ)是非常大的,比如用戶短信存儲(chǔ)模塊,這時(shí)候一個(gè)數(shù)據(jù)庫(kù)可能受物理硬件或者軟件的性能無(wú)法存儲(chǔ)成功,此時(shí),我們就可以考慮將數(shù)據(jù)庫(kù)進(jìn)行分庫(kù),數(shù)據(jù)表進(jìn)行分表存儲(chǔ)。
2實(shí)現(xiàn)方案
在介紹數(shù)據(jù)庫(kù)的分庫(kù)與分表實(shí)現(xiàn)方案之前,我們先來(lái)探討數(shù)據(jù)庫(kù)的基本操作,數(shù)據(jù)庫(kù)的基本操作,主要是插人,更新,刪除和查詢等操作,其中查詢操作是可讀操作,插入,更新和刪除是可寫操作。我們按照數(shù)據(jù)庫(kù)的操作流程,應(yīng)該是先采取插入操作生成數(shù)據(jù)表,然后對(duì)象數(shù)據(jù)庫(kù)進(jìn)行查詢可讀操作,然后對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新,刪除和插入操作。因此,為了便于理解,我們首先來(lái)介紹數(shù)據(jù)庫(kù)插入時(shí),如何進(jìn)行數(shù)據(jù)庫(kù)的分庫(kù)與分表操作,如下圖1所示。
如上圖1所示,當(dāng)數(shù)據(jù)庫(kù)客戶端進(jìn)行數(shù)據(jù)插入時(shí),將InsertSQL語(yǔ)句發(fā)送給數(shù)據(jù)庫(kù)代理服務(wù)器,數(shù)據(jù)庫(kù)代碼服務(wù)器查看,數(shù)據(jù)庫(kù)任務(wù)分配表,原則是硬件性能越好,分配條目數(shù)越多,然后進(jìn)行任務(wù)分配,分配表結(jié)構(gòu),如表1所示。
分配時(shí),按序號(hào)先后順序進(jìn)行任務(wù)分配,當(dāng)任務(wù)分配之后,數(shù)據(jù)庫(kù)代理服務(wù)器就將Insert SQL語(yǔ)句轉(zhuǎn)發(fā)給數(shù)據(jù)庫(kù)服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器接收到命令之后,就進(jìn)行數(shù)據(jù)庫(kù)的插入操作。數(shù)據(jù)庫(kù)代理服務(wù)器在進(jìn)行任務(wù)分配的同時(shí),數(shù)據(jù)庫(kù)代理服務(wù)器生成數(shù)據(jù)庫(kù)存儲(chǔ)的路由表,目的是為了數(shù)據(jù)庫(kù)的后續(xù)操作做準(zhǔn)備。
設(shè)計(jì)的數(shù)據(jù)庫(kù)存儲(chǔ)的路由表,如表2所示。
在數(shù)據(jù)庫(kù)插入完成之后,代理服務(wù)器的路由表也生成完畢,那么接下來(lái)的數(shù)據(jù)庫(kù)操作就依照該路由表進(jìn)行操作。
當(dāng)數(shù)據(jù)庫(kù)更新時(shí),那么更新操作,根據(jù)主鍵Ⅲ號(hào),可以很方便地找到對(duì)應(yīng)的IP地址,然后將該update更新語(yǔ)句發(fā)送給對(duì)應(yīng)的服務(wù)器執(zhí)行更新操作。
當(dāng)數(shù)據(jù)庫(kù)進(jìn)行刪除操作時(shí),根據(jù)主鍵ID號(hào),也可以很方便地找到對(duì)應(yīng)的IP地址,然后將Delete語(yǔ)句發(fā)送給對(duì)應(yīng)的服務(wù)器執(zhí)行刪除操作,同時(shí)要更新任務(wù)分配表,下次該庫(kù)可以存儲(chǔ)一條數(shù)據(jù)。
當(dāng)進(jìn)行數(shù)據(jù)庫(kù)查詢時(shí),如果查詢條件是主鍵或者是重要查詢列時(shí),我們都可以直接找到對(duì)應(yīng)分庫(kù)的1P地址,進(jìn)行單播查詢,但是當(dāng)查詢條件不是主鍵或者重要查詢列時(shí),我們就只只能通過輪訓(xùn)的方式進(jìn)行查詢或者進(jìn)行廣播方式進(jìn)行查詢,無(wú)論是輪訓(xùn)或者廣播,我們都需要匯總響應(yīng)消息,得到查詢結(jié)果,為查詢盡量簡(jiǎn)單,我們必須慎重設(shè)置重要查詢列,一定要是查詢中最常見的字段,比如短信存儲(chǔ)時(shí),我們一般設(shè)置時(shí)間是重要查詢列。
3總結(jié)
在分布式系統(tǒng)中,數(shù)據(jù)庫(kù)的存儲(chǔ)信息量將會(huì)越來(lái)越大,為節(jié)約成本,我們采用廉價(jià)的硬件進(jìn)行數(shù)據(jù)庫(kù)的分庫(kù)存儲(chǔ),也是目前重要的實(shí)施方案,因此研究數(shù)據(jù)庫(kù)的分庫(kù)與分表方案有很重要的現(xiàn)實(shí)意義的。本人提出的基于路由表的解決方案,靈活,自由度高,有不太合理的地方,還請(qǐng)多多批評(píng)指正。