【文章內(nèi)容簡介】
, Google MapReduce平均每天的數(shù)據(jù)處理量是 20PB,相當(dāng)于美國國會圖書館當(dāng)年 5月份存檔網(wǎng)絡(luò)數(shù)據(jù)的 240倍 分布式數(shù)據(jù)表 BigTable 53 ? 為什么需要設(shè)計 BigTable? ? Google需要存儲的數(shù)據(jù)種類繁多 ? 網(wǎng)頁,地圖數(shù)據(jù),郵件 …… ? 如何使用統(tǒng)一的方式存儲各類數(shù)據(jù)? ? 海量的服務(wù)請求 ? 如何快速地從海量信息中尋找需要的數(shù)據(jù)? ? BigTable:基于 GFS和 Chubby的分布式存儲系統(tǒng) ? 對數(shù)據(jù)進行結(jié)構(gòu)化存儲和管理 ? 與 GFS的聯(lián)系 54 ? 數(shù)據(jù)存儲可靠性 ? 高速數(shù)據(jù)檢索與讀取 ? 存儲海量的記錄(若干 TB) ? 可以保存記錄的多個版本 55 ? 與寫操作相比,數(shù)據(jù)記錄讀操作占絕大多數(shù)工作負載 ? 單個節(jié)點故障損壞是常見的 ? 磁盤是廉價的 ? 可以不提供標準接口 ? Google既能控制數(shù)據(jù)庫設(shè)計,又能進行應(yīng)用系統(tǒng)設(shè)計 56 ? 具有廣泛的適應(yīng)性 ? 支持 Google系列產(chǎn)品的存儲需求 ? 具有很強的可擴展性 ? 根據(jù)需要隨時加入或撤銷服務(wù)器 ? 應(yīng)對不斷增多的訪問請求 ? 高可用性 ? 單個節(jié)點易損,但要確保幾乎所有的情況下系統(tǒng)都可用 ? 簡單性 ? 簡單的底層系統(tǒng)可減少系統(tǒng)出錯概率,為上層開發(fā)帶來便利 57 ? 總體上,與關(guān)系數(shù)據(jù)庫中的表類似 Row Key Time Stamp Column Contents Column Anchor Column “mime” “ww” T9 CNN T8 T6 “html.. “ Text/html T5 “html.. “ t3 “html.. “ 58 關(guān)系數(shù)據(jù)庫中的表是什么樣的?有什么特征? 關(guān)系數(shù)據(jù)庫中的表設(shè)計需要遵循什么原則? ? 行 ? 每行數(shù)據(jù)有一個可排序的關(guān)鍵字和任意列項 ? 字符串、整數(shù)、二進制串甚至可串行化的結(jié)構(gòu)都可以作為行鍵 ? 表按照行鍵的?逐字節(jié)排序?順序?qū)π羞M行有序化處理 ? 表內(nèi)數(shù)據(jù)非?!∈琛?,不同的行的列的數(shù)完全目可以大不相同 ? URL是較為常見的行鍵,存儲時需要倒排 ? 統(tǒng)一地址域的網(wǎng)頁連續(xù)存儲,便于查找、分析和壓縮 →59 ? 列 ? 特定含義的數(shù)據(jù)的集合,如圖片、鏈接等 ? 可將多個列歸并為一組,稱為族( family) ? 采用 族 :限定詞 的語法規(guī)則進行定義 ? fileattr:owning_group”, “fileattr:owning_user”, etc ? 同一個族的數(shù)據(jù)被壓縮在一起保存 ? 族是必須的,是 BigTable中訪問控制的基本單元 60 ? 時間戳 ? 保存不同時期的數(shù)據(jù),如?網(wǎng)頁快照? ? “A big table” ? 表中的列可以不受限制地增長 ? 表中的數(shù)據(jù)幾乎可以無限地增加 通過 (row, col, timestamp)查詢 通過 (row, col, MOST_RECENT)查詢 61 ? 無數(shù)據(jù)校驗 ? 每行都可存儲任意數(shù)目的列 ? BigTable不對列的最少數(shù)目進行約束 ? 任意類型的數(shù)據(jù)均可存儲 ? BigTable將所有數(shù)據(jù)均看作為字符串 ? 數(shù)據(jù)的有效性校驗由構(gòu)建于其上的應(yīng)用系統(tǒng)完成 ? 一致性 ? 針對同一行的多個操作可以分組合并 ? 不支持對多行進行修改的操作符 62 Row Key Time Stamp Column: Contents T6 “html..” T5 “html..” T3 “html..” Row Key Time Stamp Column: Anchor T9 Anchor: CNN T5 Anchor: Row Key Time Stamp Column: mime T6 text/html Row Key Time Stamp Column Contents Column Anchor Column “mime” “ww” T9 CNN T8 T6 “html.. “ Text/html T5 “html.. “ t3 “html.. “ 63 ? 邏輯上的?表?被劃分為若干子表( Tablet) ? 每個 Tablet由多個 SSTable文件組成 ? SSTable文件存儲在 GFS之上 ? 每個子表存儲了 table的一部分行 ? 元數(shù)據(jù):起始行鍵、終止行鍵 ? 如果子表體積超過了閾值(如 200M),則進行分割 64 H e a d n o d eT a b l e t s e r v e rG F S C h u n k s e r v e rS S T a b l e S S T a b l e S S T a b l eT a b l e t T a b l e t T a b l e tT a b l e t s e r v e rG F S C h u n k s e r v e rS S T a b l e( r e p l i c a )S S T a b l eS S T a b l eT a b l e t T a b l e t T a b l e t( r e p l i c a )S S T a b l eL o g i c a l v i e w :P h y s i c a ll a y o u t :S S T a b l eC h u b b y S e r v e r65 ? 為每個子表服務(wù)器分配子表,對外提供服務(wù) ? 與 GFS垃圾回收進行交互,收回廢棄的 SSTable ? 探測子表服務(wù)器的故障與恢復(fù) ? 負載均衡 有效緩解單點故障 66 B i g t a b l e 主 服 務(wù) 器B