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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HBase vs HiveHive
- Oracle vs PostgreSQL DBA(21)- Oracle VPDOracleSQL
- Oracle vs PostgreSQL DBA(22)- Oracle VPD#2OracleSQL
- Oracle vs PG 索引資訊Oracle索引
- Oracle vs PostgreSQL Develop(17) - ARRAYOracleSQLdev
- Oracle vs PostgreSQL Develop(15) - DISTINCT ONOracleSQLdev
- Oracle vs PostgreSQL Develop(18) - BooleanOracleSQLdevBoolean
- Oracle vs PostgreSQL Develop(27) - PLSQL vs PLPGSQL(輸出引數)OracleSQLdev
- Oracle vs PostgreSQL Develop(29) - COMMIT in PLSQLOracleSQLdevMIT
- Oracle vs PostgreSQL Develop(16) - Prepared StatementOracleSQLdev
- Oracle vs PostgreSQL Develop(20) - Materialized ViewOracleSQLdevZedView
- Oracle vs PostgreSQL Develop(19) - PIPE ROWOracleSQLdev
- Oracle vs PostgreSQL Develop(28) - function overloadOracleSQLdevFunction
- Oracle vs PostgreSQL Develop(26) - ASCII 0OracleSQLdevASCII
- Oracle vs PostgreSQL Develop(25) - plsql vs plpgsql(語法嚴謹性)OracleSQLdev
- Oracle vs PostgreSQL Develop(31) - Index Only ScanOracleSQLdevIndex
- oracle 19c CDB vs pdb 建立Oracle
- Oracle vs PostgreSQL Develop(24) - subquery with agg functionOracleSQLdevFunction
- hbase之hbase shell
- Oracle vs PostgreSQL Develop(30) - Index&Case whenOracleSQLdevIndex
- Oracle vs PostgreSQL DBA(13)- 拆分(split)分割槽OracleSQL
- Oracle 巢狀事務 VS 自治事務Oracle巢狀
- Hbase(二)Hbase常用操作
- hbase - [04] java訪問hbaseJava
- HBase 教程:什麼是 HBase?
- 資料庫選型比對 Oracle vs sqlserver資料庫OracleSQLServer
- Debezium vs OGG vs Tapdata:如何實時同步 Oracle 資料到 Kafka 訊息佇列?OracleKafka佇列
- HBase
- HBase 系列(五)——HBase常用 Shell 命令
- Oracle vs PostgreSQL,研發注意事項(8)- Oracle資料比較規則OracleSQL
- Oracle vs PostgreSQL Develop(23) - PL(pg)sql(引數宣告)OracleSQLdev
- Hbase一:Hbase介紹及特點
- Hbase單機部署 java連線HbaseJava
- HBase概述
- hbase整理
- HBase實操:HBase-Spark-Read-Demo 分享Spark
- Oracle vs PostgreSQL Develop(14) - 分析函式KEEP DENSE_RANKOracleSQLdev函式
- Oracle vs PostgreSQL,研發注意事項(12) - NULL與索引OracleSQLNull索引
- Oracle vs PostgreSQL,研發注意事項(13) - UPDATE語句OracleSQL