Google思想三(BigTable)
BigTable 最基本的思想是把所有的資料都存入一張表。
-
大表的思想有什麼問題?
引起資料的冗餘。
-
大表的思想有什麼優點?
通過犧牲空間,換取了時間,提高了效能。
HBase 就是 BigTable 這種思想的一種實現。
對比 MySql 和 HBase 資料庫
MySql
如果要儲存學生資訊和學生成績資訊,則至少要建立兩張表:student 表,grade 表(實際上是會有三張表的,第三張表用來儲存學生和成績的對應關係,因為它們之間是多對多的關係,這裡省略)。
HBase
HBase 如果要儲存學生和他對應的成績資訊,只需要一張 student 表。
-
rowkey 表示行鍵,類似 MySql 中的主鍵,行鍵不能為空,不同於 MySql 的是,行鍵可以重複,相同的行鍵表示同一條記錄。
-
第一條語句表示建立了一個 student 表,建立了兩個列族 info,grade。(HBase 在建立表的時候不直接指明列,而是建立列族 column family,在列族中包含列)
ps:在建立 HBase 的表的時候,只需要指明列族即可,不要指明具體的列,在插入資料的時候列會動態建立。
-
第三條語句表示向 student 表中添加了一條記錄,該記錄的行鍵為 s001,會在 info 列族上動態生成一個 name 列,該列的值為 Tom。
其餘的幾條 put 語句同理,如果已經存在了該列則不會再建立列,直接插入值。
-
查詢這張 student 表中的所有記錄的語句為:
scan 'student'
,會返回兩條記錄。
MySql 和 HBase 資料庫的區別
-
MySql 是面向行的資料庫,新增,修改,刪除操作效率高。
-
HBase 是面向列的資料庫,查詢的效率高。
-
MySql 滿足資料庫的三大正規化,資料冗餘度低。
-
HBase 不遵循資料庫的三大正規化,資料冗餘度高。
總結:BigTable 的思想,利於海量資料的檢索,在大資料時代可以顯著提高資料的查詢效率,但是對資料的新增,修改,刪除是不利的。