云計(jì)算背后的秘密(3)-BigTable
由于在Google的數(shù)據(jù)中心存儲(chǔ)PB級以上的非關(guān)系型數(shù)據(jù)時(shí)候,比如網(wǎng)頁和地理數(shù)據(jù)等,為了更好地存儲(chǔ)和利用這些數(shù)據(jù),Google開發(fā)了一套數(shù)據(jù)庫系統(tǒng),名為“BigTable”。
技術(shù)概覽
從技術(shù)來講,BigTable不是一個(gè)傳統(tǒng)的關(guān)系型的數(shù)據(jù)庫,也不支持類似關(guān)聯(lián)(join)這樣高級的SQL操作,取而代之的是多級映射的數(shù)據(jù)結(jié)構(gòu),并支持大規(guī)模數(shù)據(jù)處理、高容錯(cuò)性和自我管理等特性,提供PB級的存儲(chǔ)能力,使用結(jié)構(gòu)化的文件來存儲(chǔ)數(shù)據(jù),并整個(gè)集群每秒可處理數(shù)百萬的讀寫操作。
什么是多級映射的數(shù)據(jù)結(jié)構(gòu)呢?就是一個(gè)稀疏的、多維的和排序的Map,每個(gè)Cell(單元格)由行關(guān)鍵字、列關(guān)鍵字和時(shí)間戳來進(jìn)行三維定位.Cell的內(nèi)容本身就是一個(gè)字符串,比如,存儲(chǔ)每個(gè)網(wǎng)頁的內(nèi)容。在下圖中, 反向的URL “com.cnn.www”是這行的關(guān)鍵字,“contents”這列存儲(chǔ)了多個(gè)版本的網(wǎng)頁內(nèi)容,每個(gè)版本都有一個(gè)時(shí)間戳。BigTable還提供一個(gè)用于將多個(gè)相似的列整合至一起的Column Family(列組)機(jī)制,比如,下面“anchor”這個(gè)Column Family就有“anchor: cnnsi.com”和“anchhor:my.look.ca”這個(gè)兩個(gè)列。通過Column Family這個(gè)概念,使得表可以輕松地橫向擴(kuò)展。
▲圖1. BigTable數(shù)據(jù)模型圖
在結(jié)構(gòu)上,BigTable基于GFS分布式文件系統(tǒng)和Chubby分布式鎖服務(wù)。BigTable主要分為兩部分:其一是Master節(jié)點(diǎn),用來處理元數(shù)據(jù)相關(guān)的操作并支持負(fù)載均衡。其二是Tablet節(jié)點(diǎn),主要用于存儲(chǔ)數(shù)據(jù)庫的分片tablet,并提供相應(yīng)的數(shù)據(jù)訪問,同時(shí)tablet是基于名為SSTable的格式,對壓縮有很好的支持。下圖為其具體的架構(gòu)圖:
▲圖2. BigTable架構(gòu)圖
相關(guān)產(chǎn)品
和之前介紹的MapReduce和GFS一樣,BigTable在開源界也有很多類似的產(chǎn)品,***的兩個(gè)莫過于屬于Hadoop系列的Hbase和來自于Facebook的Cassandra。Hbase的特色在于其完全繼承了BigTable的設(shè)計(jì),所以它在MapReduce和海量數(shù)據(jù)存儲(chǔ)這兩方面支持地非常好,而Cassandra的則更傾向于成為全功能型數(shù)據(jù)庫。除了這兩個(gè)產(chǎn)品之外,我個(gè)人也設(shè)計(jì)一款類BigTable的數(shù)據(jù)庫,名為YunTable,意為“云時(shí)代的BigTable”,它的目標(biāo)是做一個(gè)BigTable的精簡版,并使其更適合云環(huán)境,現(xiàn)在已經(jīng)發(fā)布其0.8版,本已基本實(shí)現(xiàn)BigTable的基本功能,官方站點(diǎn)是http://code.google.com/p/yuntable/,希望大家能多多關(guān)注。
實(shí)際用例
BigTable正在為Google六十多種產(chǎn)品和項(xiàng)目提供存儲(chǔ)和獲取結(jié)構(gòu)化數(shù)據(jù)的支撐平臺(tái),其中包括有Google Print, Orkut,Google Maps,Google Earth和Blogger等,而且在Google內(nèi)部至少運(yùn)行著500個(gè)BigTable集群。
下一代BigTable
隨著Google內(nèi)部服務(wù)對需求的不斷提高和技術(shù)的不斷地發(fā)展,導(dǎo)致原先的BigTable已經(jīng)無法滿足用戶的需求,而Google也正在開發(fā)下一代BigTable,名為“Spanner(扳手)”,它主要有下面這些BigTable所無法支持的特性:
1. 支持多種數(shù)據(jù)結(jié)構(gòu),比如table,familie,group和coprocessor等。
2. 基于分層目錄和行的細(xì)粒度的復(fù)制和權(quán)限管理。
3. 支持跨數(shù)據(jù)中心的強(qiáng)一致性和弱一致性控制。
4. 基于Paxos算法的強(qiáng)一致性副本同步,并支持分布式事務(wù)。
5. 提供許多自動(dòng)化操作。
6. 強(qiáng)大的擴(kuò)展能力,能支持百萬臺(tái)服務(wù)器級別的集群。
7. 用戶可以自定義諸如延遲和復(fù)制次數(shù)等重要參數(shù)以適應(yīng)不同的需求。
作者簡介
吳朱華,之前在IBM中國研究院參與過多個(gè)云計(jì)算產(chǎn)品的開發(fā)工作,現(xiàn)在專注于YunTable和YunEngine的研發(fā),并即將發(fā)表《剖析云計(jì)算》一書,敬請期待。
【編輯推薦】
- 從Qualcomm公司實(shí)施云計(jì)算說起
- 咖啡館里的云 打印機(jī)的新模樣
- 了解云的多租戶是云采用的關(guān)鍵一步
- 云計(jì)算背后的秘密(1)-MapReduce
- 云計(jì)算背后的秘密(2)-GFS