1. 程式人生 > >Google思想三(BigTable)

Google思想三(BigTable)

BigTable 最基本的思想是把所有的資料都存入一張表。

  • 大表的思想有什麼問題?

    引起資料的冗餘。

  • 大表的思想有什麼優點?

    通過犧牲空間,換取了時間,提高了效能。

HBase 就是 BigTable 這種思想的一種實現。

對比 MySql 和 HBase 資料庫


MySql

如果要儲存學生資訊和學生成績資訊,則至少要建立兩張表:student 表,grade 表(實際上是會有三張表的,第三張表用來儲存學生和成績的對應關係,因為它們之間是多對多的關係,這裡省略)。
mysql

HBase

HBase 如果要儲存學生和他對應的成績資訊,只需要一張 student 表。

HBase

  1. rowkey 表示行鍵,類似 MySql 中的主鍵,行鍵不能為空,不同於 MySql 的是,行鍵可以重複,相同的行鍵表示同一條記錄

  2. 第一條語句表示建立了一個 student 表,建立了兩個列族 info,grade。(HBase 在建立表的時候不直接指明列,而是建立列族 column family,在列族中包含列

    ps:在建立 HBase 的表的時候,只需要指明列族即可,不要指明具體的列,在插入資料的時候列會動態建立。

  3. 第三條語句表示向 student 表中添加了一條記錄,該記錄的行鍵為 s001,會在 info 列族上動態生成一個 name 列,該列的值為 Tom。

    其餘的幾條 put 語句同理,如果已經存在了該列則不會再建立列,直接插入值。

  4. 查詢這張 student 表中的所有記錄的語句為:scan 'student',會返回兩條記錄。

MySql 和 HBase 資料庫的區別

  1. MySql 是面向的資料庫,新增,修改,刪除操作效率高。

  2. HBase 是面向的資料庫,查詢的效率高。

  3. MySql 滿足資料庫的三大正規化,資料冗餘度低。

  4. HBase 不遵循資料庫的三大正規化,資料冗餘度高。

總結:BigTable 的思想,利於海量資料的檢索,在大資料時代可以顯著提高資料的查詢效率,但是對資料的新增,修改,刪除是不利的。