hbase和關係型資料庫的區別,HBase和oracle,Hadoop的區別?

2022-06-18 06:11:12 字數 3801 閱讀 9678

1樓:不安心的小不點

mongodb用於儲存非結構化資料,尤其擅長儲存json格式的資料。儲存的量大概在10億級別,再往上效能就下降了,除非另外分庫。

hbase是架構在hdfs上的列式儲存,擅長rowkey的快速查詢,但模糊匹配查詢(其實是前模糊或全模糊)不擅長,但儲存的量可以達到百億甚至以上,比mongodb的儲存量大多了。

2樓:萌光

hbase與傳統關聯式資料庫的區別?

答:主要體現在以下幾個方面:1.

資料型別。關聯式資料庫採用關係模型,具有豐富的資料型別和儲存方式。hbase則採用了更加簡單的資料模型,它把資料儲存為未經解釋的字串,使用者可以把不同格式的結構化資料和非結構化資料都序列化成字串儲存到hbase中,使用者需要自己編寫程式把字串解析成不同的資料型別。

2.資料操作。關聯式資料庫中包含了豐富的操作,如插入、刪除、更新、查詢等,其中會涉及複雜的多表連線,通常是藉助多個表之間的主外來鍵關聯來實現的。

hbase操作則不存在複雜的表與表之間的關係,只有簡單的插入、查詢、刪除、清空等,因為hbase在設計上就避免了複雜的表與表之間的關係,通常只採用單表的主鍵查詢,所以它無法實現像關聯式資料庫中那樣的表與表之間的連線操作。

3.儲存模式。關聯式資料庫是基於行模式儲存的,元祖或行會被連續地儲存在磁碟頁中。

在讀取資料時,需要順序掃描每個元組,然後從中篩選出查詢所需要的屬性。如果每個元組只有少量屬性的值對於查詢是有用的,那麼基於行模式儲存就會浪費許多磁碟空間和記憶體頻寬。hbase是基於列儲存的,每個列族都由幾個檔案儲存,不同列族的檔案是分離的,它的優點是:

可以降低i/o開銷,支援大量併發使用者查詢,因為僅需要處理可以回答這些查詢的列,而不是處理與查詢無關的大量資料行;同一個列族中的資料會被一起進行壓縮,由於同一列族內的資料相似度較高,因此可以獲得較高的資料壓縮比。

4.資料索引。關聯式資料庫通常可以針對不同列構建複雜的多個索引,以提高資料訪問效能。

與關聯式資料庫不同的是,hbase只有一個索引——行鍵,通過巧妙的設計,hbase中所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使整個系統不會慢下來。由於hbase位於hadoop框架之上,因此可以使用hadoop

mapreduce來快速、高效地生成索引表。

6.資料維護。在關聯式資料庫中,更新操作會用最新的當前值去替換記錄中原來的舊值,舊值被覆蓋後就不會存在。

而在hbase中執行更新操作時,並不會刪除資料舊的版本,而是生成一個新的版本,舊有的版本仍舊保留。

7.可伸縮性。關聯式資料庫很難實現橫向擴充套件,縱向擴充套件的空間也比較有限。

相反,hbase和bigtable這些分散式資料庫就是為了實現靈活的水平擴充套件而開發的,因此能夠輕易地通過在叢集中增加或者減少硬體數量來實現效能的伸縮。

但是,相對於關聯式資料庫來說,hbase也有自身的侷限性,如hbase不支援事務,因此無法實現跨行的原子性。

注:本來也想來問這個問題,然後複製一下的。結果找不到,只好自己手打了,麻煩複制拿去用的同學點下讚唄。

hbase和oracle,hadoop的區別?

3樓:

hbase作為hadoop下的一個子專案,目前發展比較強大,和傳統的關係型資料庫oracle來比,兩者各有優缺點,我們先看一個簡單的**。

資料維護:比如更新,只是按照key值插入新的記錄,舊版本還在,會在storefile合併過程中進行刪除資料維護:增刪查改非常方便,直接修改

以上簡單羅列了hbase和oracle兩者的區別,還有其他更細節的地方這裡就沒有描述,可以從上面的對比看出,兩者完全應用於不同個場景。

在hbase架構中,由於底層的hdfs不支援追加,更新。所以在hbase中,所有的操作都是寫入,寫操作都是先寫入memstore記憶體中,當達到閥值時,才窮flashcache程序寫入storefile,每次寫入都會形成一個新的storefile,當需要更新,刪除的時候,根據key值按照時間戳插入一個新的記錄,老版本記錄依舊存在,可以通過時間戳查詢老版本的記錄,當storefile達到一定的閥值,系統會進行合併,合併過程中會進行版本合併和刪除工作,形成更大的storefile。

4樓:

hadoop的hdfs支援海量資料量儲存 mapreduce支援對海量資料的分散式處理

oracle雖然可以搭建叢集 但是當資料量達到一定限度之後查詢處理速度會變得很慢 且對機器效能要求很高

其實這兩個東西不是同類 hadoop是一個分散式雲處理架構,傾向於資料計算 而oracle是一個關係型資料庫,傾向於資料儲存。要說比較可以比較hbase與oracle。

hbase是一種nosql資料庫,列式資料庫,支援海量資料儲存,支援列的擴充套件,但是查詢操作較複雜,不如oracle這類關係型資料庫簡單,且只支援一個索引,但是hbase在表結構設定合理情況下,查詢速度跟資料量大小沒有太大關係,即資料量的大小不會影響到查詢速度,順便說句hbase查詢速度可以達到ms級

傳統的行儲存和(hbase)列儲存的區別

5樓:匿名使用者

列儲存不同於傳統的關係型資料庫,其資料在表中是按行儲存的,列方式所帶來的重要好處之一就是,由於查詢中的選擇規則是通過列來定義的,因此整個資料庫是自動索引化的。按列儲存每個欄位的資料聚集儲存,在查詢只需要少數幾個欄位的時候,能大大減少讀取的資料量,一個欄位的資料聚集儲存,那就更容易為這種聚集儲存設計更好的壓縮/解壓演算法。

傳統的(oracle)行儲存和(hbase)列儲存的區別這裡寫**描a

1、資料是按行儲存的

2、沒有索引的查詢使用大量i/o

3、建立索引和物化檢視需要花費大量時間和資源4、面對查詢的需求,資料庫必須被大量膨脹才能滿足效能需求這裡寫**描述

1、資料按列儲存–每一列單獨存放

2、資料即是索引

3、只訪問查詢涉及的列–大量降低系統io

4、每一列由一個線索來處理–查詢的併發處理5、資料型別一致,資料特徵相似–高效壓縮

hive和hbase有什麼關係和區別

6樓:匿名使用者

共同點:

1.hbase與hive都是架構在hadoop之上的。都是用hadoop作為底層儲存

區別:2.hive是建立在hadoop之上為了減少mapreduce jobs編寫工作的批處理系統,hbase是為了支援彌補hadoop對實時操作的缺陷的專案 。

3.想象你在操作rmdb資料庫,如果是全表掃描,就用hive+hadoop,如果是索引訪問,就用hbase+hadoop 。

4.hive query就是mapreduce jobs可以從5分鐘到數小時不止,hbase是非常高效的,肯定比hive高效的多。

5.hive本身不儲存和計算資料,它完全依賴於hdfs和mapreduce,hive中的表純邏輯。

6.hive借用hadoop的mapreduce來完成一些hive中的命令的執行

7.hbase是物理表,不是邏輯表,提供一個超大的記憶體hash表,搜尋引擎通過它來儲存索引,方便查詢操作。

8.hbase是列儲存。

9.hdfs作為底層儲存,hdfs是存放檔案的系統,而hbase負責組織檔案。

10.hive需要用到hdfs儲存檔案,需要用到mapreduce計算框架。

7樓:匿名使用者

應該是hadoop在hbase和hive中的作用吧。 hbase與hive都是架構在hadoop之上的。都是用hadoop作為底層儲存。

而hbase是作為分散式資料庫,而hive是作為分散式資料倉儲。當然hive還是借用hadoop的mapreduce來完成一些hive中的命令的執行。而hbase與hive都是單獨安裝的。

你需要哪個安裝哪個,所以不存在重複資訊。

hive資料倉儲和關係型資料庫mysql的區別

1 首選在編譯安裝mysql的時候指定兩個引數 使用utf8編碼。2 次選在配置檔案回my.f或my.ini設定兩個引數,同答時設定init connect引數。3 第三在配置檔案my.f或my.ini設定兩個引數,同時客戶端的連線指定set names命令。4 在配置檔案my.f.hive是什麼,...

關聯式資料庫,什麼是關聯式資料庫

根據正規化的定義來判斷,比如說有部分依賴關係的就是一正規化,有傳遞依賴的是2正規化,其他的就是3正規化或比3正規化更高了。現在一般只要求到3正規化就行了。什麼是關聯式資料庫?關聯式資料庫是建立在關係模型基礎上的資料庫,借助於集合代數等數學概念和方法來處理資料庫中的資料,現實世界中的各種實體以及實體之間的各種聯絡均用...

關聯式資料庫sql語言,關聯式資料庫SQL語言?

從關聯式資料庫r中列出屬性a,b,以及c的平均值,其條件是屬性d等於d,並將a,b分組列出,並篩選出c的平均值大於c1.好熟悉啊,不過都還大學老師了 執行的順序是從索引開始的,也就是條件,限制句中開始的,這樣可以減少i o次數 輸入,輸出 它所顯示的結果是這樣的 顯示的有 a列資料,b列資料和c列資...