【正文】
每行數(shù)據(jù)有一個(gè)可排序的關(guān)鍵字和任意列項(xiàng) ? 字符串、整數(shù)、二進(jìn)制串甚至可串行化的結(jié)構(gòu)都可以作為行鍵 ? 表按照行鍵的?逐字節(jié)排序?順序?qū)π羞M(jìn)行有序化處理 ? 表內(nèi)數(shù)據(jù)非?!∈琛煌男械牧械臄?shù)完全目可以大不相同 ? URL是較為常見的行鍵,存儲(chǔ)時(shí)需要倒排 ? 統(tǒng)一地址域的網(wǎng)頁(yè)連續(xù)存儲(chǔ),便于查找、分析和壓縮 →25 ? 列 ? 特定含義的數(shù)據(jù)的集合,如圖片、鏈接等 ? 可將多個(gè)列歸并為一組,稱為族( family) ? 采用 族 :限定詞 的語(yǔ)法規(guī)則進(jìn)行定義 ? fileattr:owning_group”, “fileattr:owning_user”, etc ? 同一個(gè)族的數(shù)據(jù)被壓縮在一起保存 ? 族是必須的,是 BigTable中訪問控制的基本單元 26 ? 時(shí)間戳 ? 保存不同時(shí)期的數(shù)據(jù),如?網(wǎng)頁(yè)快照? ? “A big table” ? 表中的列可以不受限制地增長(zhǎng) ? 表中的數(shù)據(jù)幾乎可以無限地增加 通過 (row, col, timestamp)查詢 通過 (row, col, MOST_RECENT)查詢 27 ? 無數(shù)據(jù)校驗(yàn) ? 每行都可存儲(chǔ)任意數(shù)目的列 ? BigTable不對(duì)列的最少數(shù)目進(jìn)行約束 ? 任意類型的數(shù)據(jù)均可存儲(chǔ) ? BigTable將所有數(shù)據(jù)均看作為字符串 ? 數(shù)據(jù)的有效性校驗(yàn)由構(gòu)建于其上的應(yīng)用系統(tǒng)完成 ? 一致性 ? 針對(duì)同一行的多個(gè)操作可以分組合并 ? 不支持對(duì)多行進(jìn)行修改的操作符 28 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.. “ 29 ? 邏輯上的?表?被劃分為若干子表( Tablet) ? 每個(gè) Tablet由多個(gè) SSTable文件組成 ? SSTable文件存儲(chǔ)在 GFS之上 ? 每個(gè)子表存儲(chǔ)了 table的一部分行 ? 元數(shù)據(jù):起始行鍵、終止行鍵 ? 如果子表體積超過了閾值(如 200M),則進(jìn)行分割 30 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 r31 ? 為每個(gè)子表服務(wù)器分配子表,對(duì)外提供服務(wù) ? 與 GFS垃圾回收進(jìn)行交互,收回廢棄的 SSTable ? 探測(cè)子表服務(wù)器的故障與恢復(fù) ? 負(fù)載均衡 有效緩解單點(diǎn)故障 32 T a b l e t s e r v e r