1 書面作業1:舉例子說明HBase相對簡單
1.1 書面作業題目1
1.2 回答
2 書面作業2:設計HBase存儲站內短信
2.1 書面作業題目2
2.2 回答
1書面作業1:舉例子說明HBase相對簡單
1.1 書面作業題目1
請舉出一例子,使用關系型數據庫較難進行數據建模,而采用HBase則相對簡單
1.2 回答
HBase的應用場景
l 存儲大量的數據(100s TB級數據)
l 需要很高的寫吞吐量
l 在大規模數據集中進行很好性能的隨機訪問(按列)
l 需要進行優雅的數據擴展
l 結構化和半結構化的數據
l 不需要全部的關系數據庫特性,例如交叉列、交叉表、事務、連接等等
相關例子
l 淘寶的交易歷史記錄。數據量巨大無容置疑,面向普通用戶的請求需即時響應;捕獲增量數據、網絡爬蟲、廣告效果和點擊流等等。
l 動態擴展系統容量,例如:webPage DB。
2書面作業2:設計HBase存儲站內短信
2.1 書面作業題目2
用HBase存儲社交網站站內短信信息,要求記錄發送者、接受者、時間、內容,有關的查詢是發送者可以列出他所有(或按時間段)發出的信息列表(按時間降序排列),接收者可以列出他所有(或按時間段)收到的信息列表(按時間降序排列)。請進行數據建模。
2.2 回答
兩種方法:
方法一:建兩個表,發送者表,接收者表
表1:發送者表:
行鍵:發送者id
列族和列:接收者,短信內容,時間戳(系統自動生成)
表2:接收者表:
行鍵:接收者id
列族和列:發送者,短信內容,時間戳(系統自動生成)
(1)查詢是發送者可以列出他所有(或按時間段)發出的信息列表,通過在發送者表查詢。
(2)查詢是接收者可以列出他所有(或按時間段)收到的信息列表(按時間降序排列),通過接受者表查詢,結合時間戳。
方法二:建一個表,使用復合行鍵
通過使用標識、發送者id、接收者id做成復合行健,其中:標識用來區分發送還是接收,標識0為發送,標識1為接收,
l 當標識為0是,表示發送,復合行健為:標識-發送者id-接收者id。
l 當標識為1是,表示接收,復合行健為:標識-接收者id- 發送者id。
這樣設計的目的是方便使用hbase的范圍查詢功能,列族和列:短信內容,時間戳(系統自動生成)
(1)查詢是發送者可以列出他所有(或按時間段)發出的信息列表,通過使用范圍查詢,查詢“0-發送者id-%”的復合行健。
(2)查詢是接收者可以列出他所有(或按時間段)收到的信息列表(按時間降序排列),查詢“1-接收者id-%”的復合行健,並結合時間戳。
