劉曉丹(陜西廣播電視大學(xué),西安,710068)
分布式數(shù)據(jù)庫存儲子系統(tǒng)設(shè)計與實現(xiàn)
劉曉丹
(陜西廣播電視大學(xué),西安,710068)
本文通過對分布式關(guān)系型數(shù)據(jù)庫的分析研究,開發(fā)了利用價值較高的分布式關(guān)系數(shù)據(jù)庫系統(tǒng)CRDB,該系統(tǒng)最大限度地利用網(wǎng)絡(luò)和磁盤的I/O能力,提高用戶體驗,并利用Linux 提供的API大大節(jié)約了系統(tǒng)開銷。
分布式;數(shù)據(jù)庫系統(tǒng);結(jié)構(gòu)化存儲
互聯(lián)網(wǎng)自誕生以來以其獨特的魅力受到了世人的青睞,超強的影響力使其在全球范圍內(nèi)迅速普及。在2014年四月份瑞典Royal Pingdom公司研究報告顯示,全球網(wǎng)名總量已達到了22.7億,相較于五年前的11.5億,這一數(shù)據(jù)可謂意味深遠。其中,報告還稱在亞洲人口數(shù)量多的發(fā)展中國家地區(qū)網(wǎng)民人數(shù)還有很大的上升空間,這就意味著網(wǎng)絡(luò)的競爭市場只會愈演愈烈。與此同時,大眾對于數(shù)據(jù)存儲的需求也日益增長。美國IDC公司2011年6月的數(shù)據(jù)統(tǒng)計顯示,僅在當年,全球的數(shù)據(jù)產(chǎn)生量已達到了1.8ZB,未來十年可能會增長50倍。可以說這一龐大的數(shù)字,也就意味著信息時代也是“大數(shù)據(jù)”時代。
2.1 分布式存儲
相對于集中式存儲而言,分布式存儲是是將數(shù)據(jù)存儲在一個由網(wǎng)絡(luò)連通的多個結(jié)點構(gòu)成的集群之上,向上層提供存儲接口的一種存儲系統(tǒng)。分布式存儲技術(shù)具備高性能、高擴展性等優(yōu)勢,緩解了各個互聯(lián)網(wǎng)公司面對海量數(shù)據(jù)存儲的壓力,為其提供了大規(guī)模數(shù)據(jù)的存儲和訪問,而且由于其本非常廉價,受到了各公司企業(yè)的極大青睞。
2.2 結(jié)構(gòu)化與非結(jié)構(gòu)化
存儲系統(tǒng)按其存儲數(shù)據(jù)方式和提供的存取接口,一般地可分為非結(jié)構(gòu)化存儲和結(jié)構(gòu)化存儲,鍵值存儲系統(tǒng)屬于典型的非結(jié)構(gòu)化存儲系統(tǒng),它只負責基于 key-value 的存取,無法對value進行解析。而結(jié)構(gòu)化存儲系統(tǒng)則不同,典型的就是關(guān)系型數(shù)據(jù)庫,它能夠利用系統(tǒng)所提供的接口在數(shù)據(jù)上進行計算并得到計算的結(jié)果。當用戶使用它所提供的存取接口也就是SQL語言時,可實現(xiàn)對存儲的表進行各種操作,然后再將操作后的結(jié)果返回給用戶。
2.3 關(guān)系數(shù)據(jù)模型
關(guān)系數(shù)據(jù)模型、層次數(shù)據(jù)模型以及網(wǎng)狀數(shù)據(jù)模型稱為三大數(shù)據(jù)模型,而關(guān)系數(shù)據(jù)模型是三者中應(yīng)用最為廣泛、研究也最為成熟的數(shù)據(jù)模型,數(shù)據(jù)庫的類型也是根據(jù)數(shù)據(jù)模型來劃分的,分布式關(guān)系數(shù)據(jù)庫提供的是基于關(guān)系數(shù)據(jù)模型的數(shù)據(jù)存儲。此外,經(jīng)過多年的發(fā)展,SQL已成為表述關(guān)系操作的標準語言。
3.1 CRDB系統(tǒng)
該系統(tǒng)是用于存儲海量結(jié)構(gòu)化數(shù)據(jù)的分布式關(guān)系型數(shù)據(jù)庫,與傳統(tǒng)數(shù)據(jù)庫相比較,CRDB系統(tǒng)能夠在其基礎(chǔ)上提供額外的高可靠性、高擴展性、高并發(fā)和對分布式事務(wù)的處理。CRDB系統(tǒng)主要由網(wǎng)關(guān)——Gateway、認證服務(wù)器——CA、本地數(shù)據(jù)庫——LDB、索引服務(wù)器——IS、元數(shù)據(jù)服務(wù)器——MDSS、分布式事務(wù)執(zhí)行服務(wù)器——DTE等幾部分構(gòu)成,各部分之間關(guān)系密切、不可分割。
本文針對LDB存儲子系統(tǒng)重點討論,雖然該系統(tǒng)在整個系統(tǒng)中擔任最底層的存儲結(jié)點的角色,但是實際上CRDB整個系統(tǒng)的性能在很大程度上取決于LDB存儲子系統(tǒng)的性能。關(guān)鍵在于LDB負責完成用戶對數(shù)據(jù)的查詢。而且從性能來看,涉及到數(shù)據(jù)的操作最終都會由某個LDB來完成。
3.2 需求分析
在CRDB系統(tǒng)中,LDB能夠在其他子系統(tǒng)處于運行狀態(tài)時,任意時刻運行并添加到系統(tǒng)中。當剛啟動系統(tǒng)時,數(shù)據(jù)存儲量較小,若要滿足數(shù)據(jù)存儲的需求,只需底層一個LDB即可;當運行時間加長時,數(shù)據(jù)量會增大,為了避免系統(tǒng)一段時間內(nèi)不可用,LDB必須能夠動態(tài)第添加到系統(tǒng)中增加系統(tǒng)的存儲能力。而且,當系統(tǒng)存儲需求擴大時,管理員只需要針對一臺新添加的服務(wù)器配置好XML文件,LDB便可動態(tài)地添加到正在運行的系統(tǒng)中,同時也不影響系統(tǒng)的正常運行。
4.1 系統(tǒng)模塊劃分
圖1所示即LDB存儲子系統(tǒng)模塊圖。

圖1 系統(tǒng)模塊圖
觀察圖2可知LDB存儲子系統(tǒng)主要包括四個模塊。一是網(wǎng)絡(luò)通信模塊,該模塊負責LDB子系統(tǒng)與其他子系統(tǒng)和其他LDB之間的通信,通過該模塊DTE能夠為LDB發(fā)起任務(wù)執(zhí)行計劃,接收任務(wù)并完成情況的回復(fù)。而Gateway若與LDB相連則需要通過此模塊,如此LDB才可以將結(jié)果集發(fā)送給Gateway。二是任務(wù)管理模塊,該模塊負責對LDB接收到的任務(wù)的執(zhí)行情況進行管理,一個LDB同時可能對多個來自不相同或是相同的DTE任務(wù)進行執(zhí)行。此外,該模塊有一個計時器子模塊,主要為執(zhí)行的任務(wù)計時,一旦超出預(yù)期值,該模塊會將此次任務(wù)取消。三是線程調(diào)度模塊,該模塊主要實現(xiàn)的是一種異步I/O機制,筆者及團隊經(jīng)過分析選擇了非阻塞復(fù)用I/O編程框架,并做出了自行實現(xiàn)異步I/O的決定。四是數(shù)據(jù)庫連接池模塊,當任務(wù)在執(zhí)行時需要對數(shù)據(jù)庫進行訪問時,可由數(shù)據(jù)庫連接池分配一個已建立的連接,當任務(wù)結(jié)束后,連接由數(shù)據(jù)庫連接池維護,如此可大大節(jié)省由連接和關(guān)閉所帶來的開銷。
4.2 系統(tǒng)框架設(shè)計
圖2所示即LDB存儲子系統(tǒng)架構(gòu)圖。
觀察圖2我們可知,LDB對于整個分布式數(shù)據(jù)庫系統(tǒng)來說至關(guān)重要,它負責整個系統(tǒng)的底層存儲,而且網(wǎng)絡(luò)模塊監(jiān)聽了來自Gateway、DTE以及其他LDB的連接,一旦它們的被監(jiān)聽的連接上有了可讀或者可寫的事件發(fā)生,任務(wù)管理模塊的TaskManager會對這個事件進行處理,并且會根據(jù)其是否是新任務(wù)對其進行不同的處理方式。
當事件的處理不涉及數(shù)據(jù)庫的訪問,主線程可對這個事件進行直接處理,同時對下一個事件做出監(jiān)聽。反之,為了避免阻塞主線程,事件的處理將會交由線程池來處理。
4.3 系統(tǒng)的實現(xiàn)
在LDB上,包括網(wǎng)絡(luò)的讀寫,任務(wù)的調(diào)度以及計時器的響應(yīng)都是基于epoll實現(xiàn)的,它對網(wǎng)絡(luò)讀寫事件和管道讀寫事件都可進行監(jiān)聽。在LDB實現(xiàn)上,將epoll對的操作接口三種操作都封裝到EpollEvent類里面,這個類對此驅(qū)動模型需要的數(shù)據(jù)的操作進行了封裝。
綜上所述,分布式關(guān)系型數(shù)據(jù)庫的研發(fā)是一項復(fù)雜的工程,本文僅對此做出了初步的設(shè)計,最終將理論應(yīng)用于實踐還需要更深入的探索和研究。
牛園園.分布式數(shù)據(jù)庫有關(guān)連接查詢優(yōu)化算法的研究[D].長沙理工大學(xué)2010
Distributed database storage subsystem design and implementation
Liu Xiaodan
(Shaanxi Radio and TV University,Xi'an,710068)
This paper analyzes the research on distributed relational database,developed the use of highervalue distributed relational database system CRDB,the system is to maximize the use of the network and disk I/O capacity,improve user experience,and using Linux API provides significant savings in overhead.
distributed;database system;structured storage

圖2 LDB架構(gòu)圖