1. 程式人生 > >hbase非結構化數據庫與結構化數據庫比較

hbase非結構化數據庫與結構化數據庫比較

數據可靠性 插入 聯網 定位 海量數據 倍增 關系型 字符類型 文件

目的:了解hbase與支持海量數據查詢的特性以及實現方式

傳統關系型數據庫特點及局限

傳統數據庫事務性特別強,要求數據完整性及安全性,造成系統可用性以及伸縮性大打折扣。對於高並發的訪問量,數據庫性能不是很好,類似於互聯網這樣的訪問量容易造成宕機。

hbase

hbase是基於列存儲的數據庫與傳統的基於行存儲的關系型數據庫相比,可擴展性好。Hbase是一個面向列存儲的分布式存儲系統,它的優點在於可以實現高性能的並發讀寫操作,同時Hbase還會對數據進行透明的切分,這樣就使得存儲本身具有了水平伸縮性。

hbase的數據組織結構主要由主鍵以及列族構成,每個列族根據屬性需要有多個列,列是允許可擴展的,比如想要增加某一列隨時可以增加。

Hbase的優缺點
1 列的可以動態增加,並且列為空就不存儲數據,節省存儲空間.

2 Hbase自動切分數據,使得數據存儲自動具有水平scalability.

3 Hbase可以提供高並發讀寫操作的支持

Hbase的缺點:

1 不能支持條件查詢,只支持按照Row key來查詢.

2 暫時不能支持Master server的故障切換,當Master宕機後,整個存儲系統就會掛掉.

四.補充

1.數據類型,Hbase只有簡單的字符類型,所有的類型都是交由用戶自己處理,它只保存字符串。而關系數據庫有豐富的類型和存儲方式。
2.數據操作:HBase只有很簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有復雜的表和表之間的關系,而傳統數據庫通常有各式各樣的函數和連接操作。
3.存儲模式:HBase是基於列存儲的,每個列族都由幾個文件保存,不同的列族的文件時分離的。而傳統的關系型數據庫是基於表格結構和行模式保存的
4.數據維護,HBase的更新操作不應該叫更新,它實際上是插入了新的數據,而傳統數據庫是替換修改
5.可伸縮性,Hbase這類分布式數據庫就是為了這個目的而開發出來的,所以它能夠輕松增加或減少硬件的數量,並且對錯誤的兼容性比較高。而傳統數據庫通常需要增加中間層才能實現類似的功能

hbase的Htable的組織結構見http://blog.csdn.net/lifuxiangcaohui/article/details/39894265博客

hbase的應用場景

話說什麽情況需要HBase

半結構化或非結構化數據

對於數據結構字段不夠確定或雜亂無章很難按一個概念去進行抽取的數據適合用HBase。以上面的例子為例,當業務發展需要存儲author的email,phone,address信息時RDBMS需要停機維護,而HBase支持動態增加.


記錄非常稀疏

RDBMS的行有多少列是固定的,為null的列浪費了存儲空間。而如上文提到的,HBase為null的Column不會被存儲,這樣既節省了空間又提高了讀性能。




多版本數據

如上文提到的根據Row key和Column key定位到的Value可以有任意數量的版本值,因此對於需要存儲變動歷史記錄的數據,用HBase就非常方便了。比如上例中的author的Address是會變動的,業務上一般只需要最新的值,但有時可能需要查詢到歷史值。


超大數據量

當數據量越來越大,RDBMS數據庫撐不住了,就出現了讀寫分離策略,通過一個Master專門負責寫操作,多個Slave負責讀操作,服務器成本倍增。隨著壓力增加,Master撐不住了,這時就要分庫了,把關聯不大的數據分開部署,一些join查詢不能用了,需要借助中間層。隨著數據量的進一步增加,一個表的記錄越來越大,查詢就變得很慢,於是又得搞分表,比如按ID取模分成多個表以減少單個表的記錄數。經歷過這些事的人都知道過程是多麽的折騰。采用HBase就簡單了,只需要加機器即可,HBase會自動水平切分擴展,跟Hadoop的無縫集成保障了其數據可靠性(HDFS)和海量數據分析的高性能(MapReduce)。

hbase的應用也可詳見http://blog.csdn.net/yen_csdn/article/details/55657363

hbase非結構化數據庫與結構化數據庫比較