1. 程式人生 > >【圖文詳細 】HBase 資料庫——產生背景

【圖文詳細 】HBase 資料庫——產生背景

自 1970 年以來,關係資料庫用於資料儲存和維護有關問題的解決方案。大資料的出現後, 好多公司實現處理大資料並從中受益,並開始選擇像 Hadoop 的解決方案。Hadoop 使用分 布式檔案系統,用於儲存大資料,並使用 MapReduce 來處理。Hadoop 擅長於儲存各種格式 的龐大的資料,任意的格式甚至非結構化的處理。 
 

Hadoop 的限制 

Hadoop 只能執行批量處理,並且只以順序方式訪問資料。這意味著必須搜尋整個資料集, 即使是最簡單的搜尋工作。當處理結果在另一個龐大的資料集,也是按順序處理一個巨大的 資料集。在這一點上,一個新的解決方案,需要訪問資料中的任何點(隨機訪問)單元。 

 

Hadoop 隨機存取資料庫 

應用程式,如 HBase,Cassandra,CouchDB,Dynamo 和 MongoDB 都是一些儲存大量資料和 以隨機方式訪問資料的資料庫。 
 

Hadoop 的特點:

對於任意格式的龐大資料集,Hadoop 可以做到安全儲存 但是對於需要在龐大資料集做針對於單條記錄的增刪改查是做不到的。 
 
Hive 的特點:

對於儲存在 HDFS 上的結構化的資料,如果增加一些描述這些資料的元資料資訊,那麼我們 可以把儲存在 HDFS 上的資料抽象成一張二維表格,使用 Hive 進行各種 Insert/Select 操作。 但是 Hive 還是天生不支援對於單條記錄的增刪改查,也不是設計用來做單條記錄的增刪改 查的。 

 

總結:

(1)海量資料量儲存成為瓶頸,單臺機器無法負載大量資料

(2)單臺機器 IO 讀寫請求成為海量資料儲存時候高併發大規模請求的瓶頸

(3)隨著資料規模越來越大,大量業務場景開始考慮資料儲存橫向水平擴充套件,使得儲存服 務可以增加/刪除,而目前的關係型資料庫更專注於一臺機器 
 
重要問題探討:

如何設計一個能儲存龐大資料集,同時也能做到實時增刪改查的資料庫系統? 相當於設計一個 MySQL 的分散式版本。 先解決這個問題,再來學習別人的成果,這是一種較好的學習方式。而不是一上來便學習別 人的成功。須知:已掌握的知識會限制我們的思維方式。 
 
類似問題:

1、如何設計一個分散式檔案系統?

2、如何設計一個分散式計算框架?

3、如何設計一個分散式資料庫? 他們的難點是什麼? 
 
思路引爆點:

1、怎樣快速判斷一個元素在不在一個數據集中?布隆過濾器

2、是否能找到一種合適的資料結構和搜尋演算法能快速從一個數據集中找出一個元素?二分 查詢

3、如何設計分散式系統?網路程式設計模型(NIO RPC Netty)

4、是否可以提前過濾不參與查詢的資料,提高查詢效率?列裁剪