朱生 牟星亮
摘要:隨著云計算的逐步發(fā)展,云數(shù)據庫的也越來越重要,在未來數(shù)據庫領域占有重要地位。文章介紹了云數(shù)據的現(xiàn)狀、發(fā)展、特性、影響。最后討論了云數(shù)據庫的未來的發(fā)展方向。
關鍵詞: 云數(shù)據庫;云計算;大數(shù)據
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)05-0899-03
“云”[1]和“大數(shù)據”[2]是當今IT圈當之無愧的最熱的兩個關鍵詞,云和大數(shù)據之間有著千絲萬縷的聯(lián)系,兩者相互促進,共同發(fā)展。隨著云計算的發(fā)展,數(shù)據量呈現(xiàn)爆炸式增長,海量的數(shù)據除了在本地存儲,也可以在云上開辟新的空間。結構化數(shù)據、半結構化數(shù)據或者非結構化數(shù)據,云數(shù)據庫都提供了相應的產品,協(xié)助用戶管理和消費數(shù)據,將他們從繁瑣的硬件配置和管理中解脫出來。
1 云計算概述
云計算已經成為當前全社會關注的熱點,被看著繼個人計算機變革和互聯(lián)網變革后的第三次IT浪潮。云計算的出現(xiàn)可以上溯到上世紀60年代,麥卡錫曾經提出將計算能力作為一種和水電一樣的公用事業(yè)提供給用戶的理念,這可以算作云計算思想的起源。隨著IT計算的發(fā)展,在網格計算、虛擬化技術、SOA、SaaS等技術的支撐下,云計算作為一種新的資源使用和交付模式,逐漸的得到認可和推廣。
對于眾多IT廠商來說,云計算更多的是一種營銷傘。目前被廣泛認可的云計算的定義是美國國家標注與技術研究院對云計算的定義:云計算[3]是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互。
云計算主要有資源配置自動化、需求服務自動化、以網絡為中心、服務可記量化以及資源的池化和透明化等特點。
鑒于云計算的各種特點,近年來國內外各知名IT企業(yè)都在大力開發(fā)和推進云計算,如Google推出Google Apps服務[4],亞馬遜推遲彈性計算云(EC2)服務,IBM推出“藍云”計劃,國內浪潮推出面向云計算的“云?!辈僮飨到y(tǒng)。
2 云數(shù)據庫
2.1 數(shù)據庫概述
信息系統(tǒng)都需要對各種數(shù)據進行計算,然后存放在數(shù)據庫系統(tǒng)中。云計算系統(tǒng)同樣如此,在云計算中,可以把數(shù)據庫簡單的劃分為三種:傳統(tǒng)的關系數(shù)據庫,NoSql數(shù)據庫[5]和云數(shù)據庫(DBaaS)。
傳統(tǒng)數(shù)據庫主要是關系型數(shù)據庫,有商用和開源兩種。商用關系型數(shù)據庫經過多年的發(fā)展,已經非常的穩(wěn)定可靠,諸如oracle、sql server等,但價格比較昂貴。開源數(shù)據庫在穩(wěn)定性方便不及商用數(shù)據庫,但在價格方面有較大優(yōu)勢,如mysql、postgresql等開源數(shù)據庫在業(yè)界也有廣泛的應用。對于傳統(tǒng)的關系數(shù)據庫,在高并發(fā)和海量數(shù)據的情況下,對數(shù)據庫配置管理以及應用系統(tǒng)的開發(fā),都有較高要求,在維護成本和維護人員方面需求較高。對于很多中小型企業(yè),這方面的費用過于昂貴。
NoSql是Carlo Strozzi開發(fā)的一個輕量、開源、不提供SQL功能的數(shù)據庫,有時也稱作Not Only SQL的簡寫,是對不同于傳統(tǒng)的關系型數(shù)據庫的數(shù)據庫管理系統(tǒng)的統(tǒng)稱。NoSql數(shù)據庫和傳統(tǒng)的關系型數(shù)據庫存在很多不同點,最重要的一個是NoSql不使用SQL作為查詢語言。NoSql的結構通常提供弱一致性的保證,如最終一致性,或者僅限于單個的數(shù)據項。但多數(shù)NoSql系統(tǒng)都部署了分布式結構,使用分散式雜湊表將數(shù)據以冗余的方式保存在多臺服務器上,以此提供了高可用性和高擴展性。
而云數(shù)據庫通常是指運行在云計算平臺上的數(shù)據庫系統(tǒng)。是指在SaaS模式下發(fā)展起來的一種云計算技術,是一種基于云的數(shù)據存儲,提供數(shù)據的變更、查詢、計算服務,對應用程序而言只需要提交一個數(shù)據庫連接字符串即可訪問的服務,且云數(shù)據庫的用戶不能直接控制運行原始數(shù)據庫的主機。它增強了數(shù)據庫的管理及運維能力,同時消除了用戶、硬件和軟件的重復配置,并且虛擬化了許多后端的功能,使軟硬件的升級變的更容易和簡單。
2.2 云數(shù)據庫的現(xiàn)狀
根據IDC的研究報告[6],企業(yè)對結構化數(shù)據的存儲每年都有很大的增加,而對非結構化數(shù)據的存儲需求增加的更快更多,小規(guī)模的應用,系統(tǒng)負載變化可以由系統(tǒng)的空閑資源來進行處理,但在大規(guī)模應用的情況下,存在海量的數(shù)據存儲需求,而且應用對資源的需求也是動態(tài)變化的,這就意味著大量虛擬服務器的增加和減少,對于這樣情況,傳統(tǒng)的關系數(shù)據庫已經無法滿足這些需求,云數(shù)據庫成了必然的選擇,也就是說,海量數(shù)據存儲催生了云數(shù)據庫,并推動他不斷向前發(fā)展。
隨著云計算的興起,有眾多的IT公司都參與了云數(shù)據庫的開發(fā),雖然在DBaaS[7]中仍存在許多問題,尤其是關于存儲在云的敏感信息,以及服務中斷的問題,還有包括向云端數(shù)據庫遷移困難,沒有足夠成熟的案例等問題,不過,云數(shù)據庫和工具這一新興市場仍在加速發(fā)展中,云數(shù)據庫仍然是未來發(fā)展的大勢。
目前云數(shù)據庫市場上主要有Google的Bigtable和Amazon的SimpleDB,10G也開發(fā)了自己的MongoDB,微軟利用其SQL Server技術研發(fā)的Azure,以及甲骨文的開源的BekelyDB等新型開源數(shù)據庫。但是Google和Amazon幾乎占領了整個市場。
2.3 云數(shù)據庫的特點
云數(shù)據庫與傳統(tǒng)的關系型數(shù)據庫存在著根本的不同,云數(shù)據庫主要對分布的、海量的數(shù)據進行存儲,必須能夠高效的管理大量的數(shù)據。相比傳統(tǒng)的關系型數(shù)據庫,云數(shù)據庫具有以下幾個特點:
1) 動態(tài)可擴展
因為面臨出來海量數(shù)據的需求,從理論上來說,云數(shù)據庫具有無限可擴展性,以滿足不斷增長的數(shù)據存儲需求。在面對不斷變化的需求時,云數(shù)據庫能表現(xiàn)出更好的彈性。如需要分配額外的數(shù)據庫存儲資源來處理一些新增加的需求,在云數(shù)據庫中這個過程只需幾分鐘,當需求降低的時候,也可以很方便的釋放這些資源。
2) 高可用性
對云數(shù)據庫來說,不存在單點失效的問題,如果某一個節(jié)點失效,剩余的節(jié)點就會接管該節(jié)點未完成的事務。而且在云數(shù)據庫中,通常數(shù)據都是復制的,在地理分布上也是如此。各大型云計算服務提供商如Google、Amazon和IBM等都有分布在全球范圍內的數(shù)據中心,通過在不同地理空間進行數(shù)據復制,可以提供高水平的容錯能力。
3) 使用代價較低
云數(shù)據庫通常是采用多租戶(multi-tenancy)的形式,這種資源共享的方式對于用戶來說,可以節(jié)省很多的開銷,而且采用按需付費的方式來使用云計算環(huán)境下的各種軟硬件資源,不會產生各種不必要的資源浪費。同時,云數(shù)據庫的底層存儲通常是采用大量廉價的商業(yè)服務器,可以更一步降低成本。
4) 易用性
云數(shù)據庫對用戶隱藏了底層的所有信息,所有的底層信息對用戶程序來說都是絕對透明的。云數(shù)據庫的用戶不用控制運行原始數(shù)據庫的服務器,也不必了解其他任何信息,只需要一個有效的鏈接字符串就可以方便的使用云數(shù)據庫。使用云數(shù)據庫的服務,如數(shù)據庫的管理維護、備份、監(jiān)控、服務器優(yōu)化等日常工作,數(shù)據庫主機的維護管理等工作都將由云數(shù)據庫平臺的自動化工具來完成,用戶可以將時間和精力都花費在用戶程序的優(yōu)化和管理上面。
5) 支持大規(guī)模的并行處理
在云計算系統(tǒng)中,由于處理的是海量的數(shù)據,為了效率和有效的使用云計算系統(tǒng)的所有資源,數(shù)據庫必須能夠支持大規(guī)模的并行運算。而對于用戶來說,他們看到的數(shù)據庫只是一個虛擬的數(shù)據庫,數(shù)據庫管理平臺會根據策略把用戶的數(shù)據進行分拆存儲到不同的物理主機或者虛擬機上,因此云數(shù)據能夠有效的提供大規(guī)模的并行處理的服務。
3 實例研究
下面以Google的云數(shù)據庫產品為例,介紹云數(shù)據庫的實現(xiàn)和使用。
Google研發(fā)的大規(guī)模數(shù)據庫系統(tǒng)Google BigTable[8]只能滿足弱一致性要求,它設計的目的是為了出來Google內部的海量的格式化和半格式化數(shù)據。它允許客戶端進行數(shù)據部署以及對格式進行動態(tài)的控制。
BigTable的實現(xiàn)是構建在Google其他幾個基礎設施之上的,它使用了Google的分布式文件系統(tǒng)GFS存儲數(shù)據和日志文件,它還依賴一個持久性的、高可用的分布式鎖服務Chubby[9],最后它還要依靠簇管理系統(tǒng)來調度作業(yè)、調度共享服務器上面的資源、處理服務器故障和監(jiān)控服務器的狀態(tài)。
BigTable提供了一個和以往不同的簡單動態(tài)的非關系型數(shù)據模型,采用的是鍵/值數(shù)據模型[10]。一個BigTable實際上就可以看作一個永久的分布式的稀疏的多維排序圖,采用row key、column key及timestamp來對該圖進行索引,其中每個值都是一個未經解釋的字節(jié)數(shù)組。
在BigTable中,行列和時間戳都是保存在表格的單元里,然后里面的內容按行劃分,多個行組成一個tablet(小表),然后被保存到一個服務器節(jié)點中。在一個數(shù)據簇中,存儲有許多表,而沒個表都是一個tablet集合。在最初,一個表只有一個table,隨著表的增長,會分解成多個tablet,系統(tǒng)使用類似于B+樹的一個3層的架構來存儲這些tablet的信息。因為系統(tǒng)采用了鍵/值數(shù)據模型,表之間不存在關聯(lián)操作,使得數(shù)據的分區(qū)操作相對比較簡單。
在BigTable的訪問數(shù)據,首先是由客戶端向管理器獲取一份分區(qū)映射圖,然后再圖中根據鍵值搜尋數(shù)據的存儲位置,然后向改數(shù)據節(jié)點請求數(shù)據,最后由改節(jié)點向客戶端返回相應的數(shù)據。在實際應用中,為了提升性能,也是為了緩解在管理器端的性能瓶頸,客戶端通常會緩存一份常用的分區(qū)映射圖。
4 總結及未來展望
云數(shù)據庫隨著云計算技術的發(fā)展,越來越受到業(yè)界的關注,當前,很多IT公司都參與到云計算當中來,云數(shù)據庫的影響也日趨擴大,主要體現(xiàn)在以下幾個方面,包括改變了很多企業(yè)的數(shù)據管理的方式,促使數(shù)據庫技術的發(fā)展,重新分配數(shù)據庫市場的份額等。
隨著市場的發(fā)展,以及云數(shù)據庫的成熟,云數(shù)據庫在未來一段時間是數(shù)據庫技術的發(fā)展趨勢,云數(shù)據庫的相關問題也是將來數(shù)據庫研究的重點內容。
參考文獻:
[1] 陳康,鄭緯民.云計算:系統(tǒng)實例與研究現(xiàn)狀[J].軟件學報,2009(5):337-348.
[2] 李艷華.云計算技術研究現(xiàn)狀綜述[J].電腦知識與技術,2009,5(22):14-15.
[3] 姚繼鋒.未來需要云計算[J].高性能計算發(fā)展與應用,2009(1):8.
[4] Zhang LongLi.cloud storage technology [J].Telecommunications and Science,2010(SI):71-74.
[5] 高建秀.云存儲在數(shù)字資源長期保存中的應用探討[J].現(xiàn)代圖書情報技術,2010 (6):1-6.
[6] Chang F,Dean J,Ghemawat S,Hsieh WC, Wallach DA,Burrows M,Chandra T,F(xiàn)ikes A,Gruber RE.Bigtable:A distributed storage system for structured data[J].ACM Trans. On Computer Systems,2008,26 (2) :1-26.
[7] Chen K,Zheng WM.Cloud computing: System instances and current research[J].Journal of Software,2009,20(5): I227-I348.
[8] Feng DG, M, Zhang Y, Xu Z. Study on cloud computing security. Journal of Software, 2011,22 (1) :71-83.
[9] 李婷.云計算的資源管理方法研究[J].電腦與電信,2010,16 (1) :62-64.
[10] 李煜民.云計算環(huán)境下的數(shù)據存儲[J].電腦知識與技術,2010,6 (5):32-34.