Hbase VS Oracle
1、 Hbase適合大量插入同時又有讀的情況。輸入一個Key擷取一個value或輸入一些key獲得一些value。
2、 Hbase的瓶頸是硬碟傳輸速度。Hbase的操作,它可以往資料裡面insert,也可以update一些資料,但update的實際上也是insert,只是插入一個新的時間戳記的一行。Delete資料,也是insert,只是insert一行帶有delete標記的一行。Hbase的所有操作都是追加插入操作。Hbase是一種日誌集資料庫。它的儲存方式,像是記錄檔一樣。它是批量大量的往硬碟中寫,通常都是以檔案形式的讀寫。這個讀寫速度,就取決於硬碟與機器之間的傳輸有多快。
而Oracle的瓶頸是硬碟尋道時間。它經常的操作時隨機讀寫。要update一個資料,先要在硬碟中找到這個block,然後把它讀入記憶體,在記憶體中的緩衝中修改,過段時間再回寫回去。由於你尋找的block不同,這就存在一個隨機的讀。硬碟的尋道時間主要由轉速來決定的。而尋道時間,技術基本沒有改變,這就形成了尋道時間瓶頸。
3、 Hbase中資料可以儲存許多不同時間戳記的版本(即同一資料可以複製許多不同的版本,准許資料冗餘,也是優勢)。資料按時間排序,因此Hbase特別適合尋找按照時間排序尋找Top n的情境。找出某個人最近瀏覽的訊息,最近寫的N篇部落格,N種行為等等,因此Hbase在互連網應用非常多。
4、 Hbase的局限。只能做很簡單的Key-value查詢。它適合有高速插入,同時又有大量讀的操作環境。而這種情境又很極端,並不是每一個公司都有這種需求。在一些公司,就是普通的OLTP(聯機交易處理)隨機讀寫。在這種情況下,Oracle的可靠性,系統的負責程度又比Hbase低一些。而且Hbase局限還在於它只有主鍵索引,因此在建模的時候就遇到了問題。比如,在一張表中,很多的列我都想做某種條件的查詢。但卻只能在主鍵上建快速查詢。所以說,不能籠統的說那種技術有優勢。
5、 Oracle是行式資料庫,而Hbase是列式資料庫。列式資料庫的優勢在於資料分析這種情境。資料分析與傳統的OLTP的區別。資料分析,經常是以某個列作為查詢條件,返回的結果也經常是某一些列,不是全部的列。在這種情況下,行式資料庫反應的效能就很低效。
行式資料庫:Oracle為例,資料檔案的基本組成單位:塊/頁。塊中資料是按照一行行寫入的。這就存在一個問題,當我們要讀一個塊中的某些列的時候,不能唯讀這些列,必須把這個塊整個的讀入記憶體中,再把這些列的內容讀出來。換句話就是:為了讀表中的某些列,必須要把整個表的行全部讀完,才能讀到這些列。這就是行資料庫最糟糕的地方。
列式資料庫:是以列作為元素儲存的。同一個列的元素會擠在一個塊。當要讀某些列,只需要把相關的列塊讀到記憶體中,這樣讀的IO量就會少很多。通常,同一個列的資料元素通常格式都是相近的。這就意味著,當資料格式相近的時候,資料就可以做大幅度的壓縮。所以,列式資料庫在資料壓縮方面有很大的優勢,壓縮不僅節省了儲存空間,同時也節省了IO。(這一點,可利用在當資料達到百萬、千萬層級以後,資料查詢之間的最佳化,提高效能,示情境而定)
Hadoop+HBase搭建雲端儲存總結 PDF
HBase 結點之間時間不一致造成regionserver啟動失敗
Hadoop+ZooKeeper+HBase叢集配置
Hadoop叢集安裝&HBase實驗環境搭建
基於Hadoop叢集的HBase叢集的配置 ‘
Hadoop安裝部署筆記之-HBase完全分布模式安裝
單機版搭建HBase環境圖文教程詳解
HBase 的詳細介紹:請點這裡
HBase 的:請點這裡
本文永久更新連結地址: