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