陳 浩
(東北石油大學(xué),黑龍江大慶,163318)
所謂的云數(shù)據(jù)庫是指儲存在云中的資源,是在SaaS 應(yīng)用發(fā)展起來的背景下而發(fā)展的一種云計算技術(shù)。通過該技術(shù)可極大的提高當(dāng)前數(shù)據(jù)庫的儲存的能力,并減少對軟硬件的重復(fù)配置。因此,林子雨等人對云數(shù)據(jù)庫的定義則是指在云計算的環(huán)境中進行部署和虛擬化的數(shù)據(jù)庫的索引。
而康一梅等人認為,所謂的云數(shù)據(jù)庫是指由若干個不同的站點組成,這些站點又被稱為節(jié)點,他們在云中相互連接起來,并擁有各自的不同的數(shù)據(jù)庫。因此,可將云數(shù)據(jù)庫看做是一個統(tǒng)一的集中式的數(shù)據(jù)庫系統(tǒng),在邏輯上屬于統(tǒng)一的,但是從物理結(jié)構(gòu)的角度,其實屬于分布的。
而隨著云數(shù)據(jù)庫的發(fā)展,現(xiàn)在比較流行的數(shù)據(jù)庫有微軟的SQL Azure、谷歌的GFS 分布式文件系統(tǒng)等。而云數(shù)據(jù)庫存儲和計算體系如圖1 所示。
云數(shù)據(jù)庫作為建立在SaaS 應(yīng)用之上的新型云計算技術(shù),而被廣大的計算機愛好者使用,其主要是因為云數(shù)據(jù)庫與傳統(tǒng)的數(shù)據(jù)庫相比,具有以下的特性:
通過康一梅等人對云數(shù)據(jù)庫的表述,則可以認為,云數(shù)據(jù)庫從理論上來看,是具有無限的擴展性,從而可以滿足不斷增加的數(shù)據(jù)存儲需求。因此,從上述的分析中,我們可以看出云數(shù)據(jù)庫具有很好的可擴展的彈性。以360 或者是騰訊的云端存儲為例,如采用原來的硬件作為其個人用戶的存儲工具,則需要很大的硬件儲存設(shè)備,而通過云數(shù)據(jù)庫,其現(xiàn)有的云端存儲能力急劇加大,從而大大提高了個人用戶對網(wǎng)絡(luò)云端的存儲的效率。而其網(wǎng)絡(luò)云端存儲也在逐步的擴大。
圖1 云計算體系衍生的云存儲體系架構(gòu)
云數(shù)據(jù)庫的最大的特點是解決了數(shù)據(jù)的共享問題。在云數(shù)據(jù)庫管理中,通過采用多租戶的方式,從而極大的給用戶節(jié)約了開支,同時租戶只需要按照每月付費的方式,就可使用云數(shù)據(jù)庫當(dāng)中的各種不同的軟件、硬件等資源,并不需要產(chǎn)生其他的額外的費用。而通過林子雨等人對云數(shù)據(jù)庫的定義,可以看出其大量的數(shù)據(jù)的存儲是集中在虛擬的硬件之中,因此,通過這種方式可以大量的減少對數(shù)據(jù)庫使用的成本,從而可大量的減少對與數(shù)據(jù)庫使用的費用。
在對云數(shù)據(jù)的使用中,不存在任何的單點失效的問題。如果在使用任何的節(jié)點失效,其余的剩下的節(jié)點會立即進行接管,并且在運輸局庫當(dāng)中國,數(shù)據(jù)一般都是通過復(fù)制的,在地理上則是通過布置在全球的商業(yè)服務(wù)器進行復(fù)制,從而提供高水平的數(shù)據(jù)容錯能力。如谷歌通過在全球部署的25000 個代理服務(wù)器,即使其中任何代理服務(wù)器出現(xiàn)問題,其他的也可繼續(xù)提供使用,而不會導(dǎo)致用戶的數(shù)據(jù)出現(xiàn)問題。
對云數(shù)據(jù)庫的使用,用戶則不需要通過購買原始的硬件設(shè)別等方式,同時也沒有必要了解云數(shù)據(jù)庫所存放的地方,而指需要一個有效的鏈接字符串即可對云數(shù)據(jù)庫進行使用。
現(xiàn)階段的非共享架構(gòu)下的數(shù)據(jù)訪問,通常與其不同的結(jié)構(gòu)體系有著很大的關(guān)系。而當(dāng)前主流的云數(shù)據(jù)庫結(jié)構(gòu)體系通常以微軟為代表的關(guān)系數(shù)據(jù)模型與以谷歌、甲骨文為代表的鍵/值數(shù)據(jù)模型為主。而其對數(shù)據(jù)庫的訪問,通常采用建立映射的方式實現(xiàn)對數(shù)據(jù)庫的訪問。
圖2 云數(shù)據(jù)庫中的數(shù)據(jù)訪問方法
當(dāng)客戶端在發(fā)出相關(guān)的數(shù)據(jù)請求的時候,其首先會向管理器請求一份分區(qū)的映射圖,在請求發(fā)送之后,管理器會向客戶端發(fā)送相應(yīng)的映射圖,并在圖中進行相應(yīng)的搜索,并通過自身的鍵值來查找相應(yīng)數(shù)據(jù)的位置;在找到相應(yīng)的數(shù)據(jù)節(jié)點之后,客戶端會向相應(yīng)的數(shù)據(jù)節(jié)點發(fā)送數(shù)據(jù)請求,數(shù)據(jù)節(jié)點則會根據(jù)請求將相應(yīng)的數(shù)據(jù)傳遞給客戶端。而在實際的操作上,為改變客戶端訪問的瓶頸,通常會在客戶端建立緩存區(qū)域,存儲其常用的分區(qū)映射圖,這樣便可在不需要與管理器交互的情況下即可使用相應(yīng)的接點,從而大大提高了對數(shù)據(jù)的利用。
而采用該種方式的如BigTable,在該云數(shù)據(jù)庫中,其所為的數(shù)據(jù)節(jié)點的服務(wù)器被稱為Tablet 服務(wù)器,而管理器又被稱為主服務(wù)器。主服務(wù)器的作用是負責(zé)將Tablet 按照相應(yīng)的邏輯分配到Tablet 服務(wù)器上,并可對Tablet 服務(wù)器做出負載的均衡,以及實現(xiàn)對GFS 文件系統(tǒng)當(dāng)中的垃圾文件的收集。
除上述的功能外,主管理器還可負責(zé)處理模式的變化,如對表、列的創(chuàng)建,從而使得客戶端不需要直接從主服務(wù)器上去讀取數(shù)據(jù),而只需要從Tablet 服務(wù)器上面去讀取相應(yīng)的數(shù)據(jù)即可,這樣就是的客戶端不需要更多的去依賴主服務(wù)器,從而使得主服務(wù)器的負載壓力會減少很多。
而針對HBase 則采用與BigTable 其類似的方式來實現(xiàn)對數(shù)據(jù)庫的訪問。但與BigTable 不同是,其數(shù)據(jù)的存儲是由一個表當(dāng)中排序的行所構(gòu)成的,可使得所有的表、行都可存儲在一個集合中。
而針對關(guān)系模型的數(shù)據(jù)庫,通過建立樹型節(jié)點的方式來實現(xiàn)對數(shù)據(jù)庫的訪問。如HugeTablel 為分布式的數(shù)據(jù)系統(tǒng),其采用標準的SQL 語言執(zhí)行查詢,并可支持高性能的全局的索引,并采用多主服務(wù)器的機制以及可靠的Zookeeper 系統(tǒng),保證其服務(wù)單點的失效。通過客戶端的的數(shù)據(jù)請求,并通過其中的主服務(wù)的組件,采用ODBC/JDBC 等接口實現(xiàn)對數(shù)據(jù)訪問的驅(qū)動,以此實現(xiàn)對數(shù)據(jù)的訪問。
圖3 可擴展分布式關(guān)系型系統(tǒng)體系架構(gòu)
本文對于非共享架構(gòu)下的云數(shù)據(jù)的訪問,以其特征和概念的角度出發(fā),借鑒相關(guān)文獻和研究成果,提出可通過建立映射的方式實現(xiàn)對數(shù)據(jù)的訪問,從而提高對云數(shù)據(jù)庫技術(shù)利用的效率。
[1] 林子雨,賴永炫,林琛,謝怡,鄒權(quán).云數(shù)據(jù)庫研究[J]. 軟件學(xué)報,2012,05:1148-1166.
[2] 劉桂蘭,王書海.云數(shù)據(jù)庫體系架構(gòu)研究分析[J].河北省科學(xué)院學(xué)報,2013,02:75-80.