Hbase VS Oracle
一,索引不同造成行為的差異
Hbase只能建立一個主鍵索引,而且之後的資料查詢也只能基於該索引進行簡單的key-value查詢;
但是Oracle可以建立任意索引,也可以按照任意列進行資料查詢。
二,Hbase適合大量插入同時又有讀的情況,讀一般為key-value查詢
大資料、高併發正合Hbase的胃口
三,Hbase的瓶頸是硬碟傳輸速度,Oracle的瓶頸是硬碟尋道時間
Hbase都是大量往硬碟上寫資料(沒有delete、update,都是insert),即使是讀資料,也是優先MemStore,所以硬碟傳輸速度成為其瓶頸;
而Oracle由於具有隨機訪問特性(select、update等),所以硬碟尋道時間成為其瓶頸,而尋道時間主要由轉速決定。
四,Hbase很適合尋找按照時間排序top n的場景
因為Hbase的資料都具有時間戳(Hbase預設就有時間戳)
行式儲存示意圖:
行式儲存:
資料存放在資料檔案內
資料檔案的基本組成單位:塊/頁(一行接一行存在block中,當然block不會填滿,預留空間進行行的操作,譬如:update)
塊內結構:塊頭、資料區
為了select橘紅色的列,行式資料庫會把整個block加在到記憶體,然後篩選出所需列。
而對於Hbase而言,由於資料儲存特性,資料以列族為單位進行儲存,一個檔案塊儲存的都是同一個列族的資料),
這樣,查詢會比行式資料庫最佳化很多。
另外,由於在Hbase中,同一個列裡面資料格式比較接近,或者長度相近,從而可以對資料進行大幅度的壓縮,
結果就是節省了硬碟空間,也減少了IO
Hbase只能建立一個主鍵索引,而且之後的資料查詢也只能基於該索引進行簡單的key-value查詢;
但是Oracle可以建立任意索引,也可以按照任意列進行資料查詢。
二,Hbase適合大量插入同時又有讀的情況,讀一般為key-value查詢
大資料、高併發正合Hbase的胃口
三,Hbase的瓶頸是硬碟傳輸速度,Oracle的瓶頸是硬碟尋道時間
Hbase都是大量往硬碟上寫資料(沒有delete、update,都是insert),即使是讀資料,也是優先MemStore,所以硬碟傳輸速度成為其瓶頸;
而Oracle由於具有隨機訪問特性(select、update等),所以硬碟尋道時間成為其瓶頸,而尋道時間主要由轉速決定。
四,Hbase很適合尋找按照時間排序top n的場景
因為Hbase的資料都具有時間戳(Hbase預設就有時間戳)
行式儲存示意圖:
行式儲存:
資料存放在資料檔案內
資料檔案的基本組成單位:塊/頁(一行接一行存在block中,當然block不會填滿,預留空間進行行的操作,譬如:update)
塊內結構:塊頭、資料區
為了select橘紅色的列,行式資料庫會把整個block加在到記憶體,然後篩選出所需列。
而對於Hbase而言,由於資料儲存特性,資料以列族為單位進行儲存,一個檔案塊儲存的都是同一個列族的資料),
這樣,查詢會比行式資料庫最佳化很多。
另外,由於在Hbase中,同一個列裡面資料格式比較接近,或者長度相近,從而可以對資料進行大幅度的壓縮,
結果就是節省了硬碟空間,也減少了IO
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-776770/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- NOSQL資料庫大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBaseSQL資料庫MongoDBRedis
- oracle user privsOracle
- Hbase(二)Hbase常用操作
- Oracle vs PostgreSQL DBA(21)- Oracle VPDOracleSQL
- HBase 教程:什麼是 HBase?
- HBase篇--HBase常用優化優化
- hbase - [04] java訪問hbaseJava
- windows下把資料從oracle匯入hbaseWindowsOracle
- HBase篇--HBase操作Api和Java操作Hbase相關ApiAPIJava
- Oracle for Linux vs. Oracle for NT(轉)OracleLinux
- HBase 系列(五)——HBase常用 Shell 命令
- Hbase單機部署 java連線HbaseJava
- Hbase篇--Hbase和MapReduce結合ApiAPI
- hbase之 Hbase shell 常用命令
- Oracle vs PostgreSQL DBA(22)- Oracle VPD#2OracleSQL
- Oracle vs PostgreSQL Develop(18) - BooleanOracleSQLdevBoolean
- Oracle vs PostgreSQL Develop(15) - DISTINCT ONOracleSQLdev
- Oracle vs PostgreSQL Develop(17) - ARRAYOracleSQLdev
- PostgreSQL vs. Oracle 測試SQLOracle
- Oracle SID VS Service NameOracle
- HBase框架框架
- Hbase原理
- HBase初探
- Oracle vs PostgreSQL Develop(27) - PLSQL vs PLPGSQL(輸出引數)OracleSQLdev
- HBase篇--搭建HBase完全分散式叢集分散式
- Oracle vs PostgreSQL Develop(25) - plsql vs plpgsql(語法嚴謹性)OracleSQLdev
- Oracle vs PostgreSQL Develop(26) - ASCII 0OracleSQLdevASCII
- Oracle vs PostgreSQL Develop(20) - Materialized ViewOracleSQLdevZedView
- Oracle vs PostgreSQL Develop(19) - PIPE ROWOracleSQLdev
- Oracle vs PostgreSQL Develop(16) - Prepared StatementOracleSQLdev
- tmpfs devshm Oracle 11GdevOracle
- Oracle RAC vs DB2 PureScaleOracleDB2
- Oracle Vs MsSQL 之交換分割槽OracleSQL
- hbase與phoenix整合(使用phoenix操作hbase資料)
- HBase實操:HBase-Spark-Read-Demo 分享Spark
- HBase學習之二: hbase分頁查詢
- Hbase優化優化
- HBase學習