作者 吳朱華 | 2010-12-07 18:36 | 類型 云計算, 彎曲推薦, 行業(yè)動感 | 沒有用戶評論 »
由于在Google的數(shù)據(jù)中心存儲PB級以上的非關(guān)系型數(shù)據(jù)時候,比如網(wǎng)頁和地理數(shù)據(jù)等,為了更好地存儲和利用這些數(shù)據(jù),Google開發(fā)了一套數(shù)據(jù)庫系統(tǒng),名為“BigTable”。
技術(shù)概覽從技術(shù)來講,BigTable不是一個傳統(tǒng)的關(guān)系型的數(shù)據(jù)庫,也不支持類似關(guān)聯(lián)(join)這樣高級的SQL操作,取而代之的是多級映射的數(shù)據(jù)結(jié)構(gòu),并支持大規(guī)模數(shù)據(jù)處理、高容錯性和自我管理等特性,提供PB級的存儲能力,使用結(jié)構(gòu)化的文件來存儲數(shù)據(jù),并整個集群每秒可處理數(shù)百萬的讀寫操作。 什么是多級映射的數(shù)據(jù)結(jié)構(gòu)呢?就是一個稀疏的、多維的和排序的Map,每個Cell(單元格)由行關(guān)鍵字、列關(guān)鍵字和時間戳來進(jìn)行三維定位.Cell的內(nèi)容本身就是一個字符串,比如,存儲每個網(wǎng)頁的內(nèi)容。在下圖中, 反向的URL “com.cnn.www”是這行的關(guān)鍵字,“contents”這列存儲了多個版本的網(wǎng)頁內(nèi)容,每個版本都有一個時間戳。BigTable還提供一個用于將多個相似的列整合至一起的Column Family(列組)機(jī)制,比如,下面“anchor”這個Column Family就有“anchor: cnnsi.com”和“anchhor:my.look.ca”這個兩個列。通過Column Family這個概念,使得表可以輕松地橫向擴(kuò)展。 圖1. BigTable數(shù)據(jù)模型圖 在結(jié)構(gòu)上,BigTable基于GFS分布式文件系統(tǒng)和Chubby分布式鎖服務(wù)。BigTable主要分為兩部分:其一是Master節(jié)點,用來處理元數(shù)據(jù)相關(guān)的操作并支持負(fù)載均衡。其二是Tablet節(jié)點,主要用于存儲數(shù)據(jù)庫的分片tablet,并提供相應(yīng)的數(shù)據(jù)訪問,同時tablet是基于名為SSTable的格式,對壓縮有很好的支持。下圖為其具體的架構(gòu)圖: 圖2. BigTable架構(gòu)圖
相關(guān)產(chǎn)品和之前介紹的MapReduce和GFS一樣,BigTable在開源界也有很多類似的產(chǎn)品,最著名的兩個莫過于屬于Hadoop系列的Hbase和來自于Facebook的Cassandra。Hbase的特色在于其完全繼承了BigTable的設(shè)計,所以它在MapReduce和海量數(shù)據(jù)存儲這兩方面支持地非常好,而Cassandra的則更傾向于成為全功能型數(shù)據(jù)庫。除了這兩個產(chǎn)品之外,我個人也設(shè)計一款類BigTable的數(shù)據(jù)庫,名為YunTable,意為“云時代的BigTable”,它的目標(biāo)是做一個BigTable的精簡版,并使其更適合云環(huán)境,現(xiàn)在已經(jīng)發(fā)布其0.8版,本已基本實現(xiàn)BigTable的基本功能,官方站點是http://code.google.com/p/yuntable/,希望大家能多多關(guān)注。
實際用例BigTable正在為Google六十多種產(chǎn)品和項目提供存儲和獲取結(jié)構(gòu)化數(shù)據(jù)的支撐平臺,其中包括有Google Print, Orkut,Google Maps,Google Earth和Blogger等,而且在Google內(nèi)部至少運(yùn)行著500個BigTable集群。
下一代的BigTable隨著Google內(nèi)部服務(wù)對需求的不斷提高和技術(shù)的不斷地發(fā)展,導(dǎo)致原先的BigTable已經(jīng)無法滿足用戶的需求,而Google也正在開發(fā)下一代BigTable,名為“Spanner(扳手)”,它主要有下面這些BigTable所無法支持的特性:
|
聯(lián)系客服