大數據倉庫-增量更新

 

2015-12-03 朱潔 hadoop技術學習

現在是國內凌晨3點,爲了抵擋睡意,還是寫寫技術博客。今天和大家討論下大數據倉庫中的更新技術。

當前很多大數據技術,如HDFS最早設定的是數據不更新,只增量疊加。傳統數據倉庫(Greenplum,treadata,oracle RAC)通常碰到兩個問題:

1、更新的throughput不高。主要影響原因有兩點,鎖的原因,還有更新通常是隨機IO,很難充分利用硬盤高吞吐的優勢。

2、更新影響查詢。更新把IO佔住,查詢的體驗急劇下降。

爲了解決這個問題,GoogleMesa系統設計了一個MVCC的數據模型,通過增量更新和合並技術。將離散的更新IO轉變成批量IO,平衡了查詢和更新的衝突,提高了更新的吞吐量。

 

Mesa設計了一個多版本管理技術來解決更新的問題:

1、使用二維表來管理數據,每個表要制定schma,類似傳統數據庫。

2、每個字段用KeyValue來管理。Schema就是是key的集合,指向value的集合。

3、每個字段指定一個聚合函數F。(最常見的是SUM

4、數據更新進來的時候,按照MVCC增量更新,並給增量更新指定一個版本號N,和謂詞P

 

5、查詢進來的時候,自動識別聚合函數,把所有版本的更新按照聚合函數自動計算出來。

 

 

6、多版本如果永遠不合並,存儲的代價會非常大,而且因爲每次查詢需要遍歷所有版本號,所以版本過多會影響查詢,因此定期的合併是自然而然的。

7、Mesa採用兩段更新的策略。更新數據按版本號實時寫入,每十個版本自動合併,每天又全量合併一遍,合併成一個基礎版本。

好了,今天主要就介紹Mesa的數據模型。Mesa的論文中舉了一個例子更方便理解,大家去看看吧。

 

 
 

微信掃一掃
關注該公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章