hbase是什麼資料庫
① Hbase和傳統資料庫的區別
HBase與傳統關系資料庫的區別?
答:主要體現在以下幾個方面:1.數據類型。關系資料庫採用關系模型,具有豐富的數據類型和儲存方式。HBase則採用了更加簡單的數據模型,它把數據儲存為未經解釋的字元串,用戶可以把不同格式的結構化數據和非結構化數據都序列化成字元串保存到HBase中,用戶需要自己編寫程序把字元串解析成不同的數據類型。
2.數據操作。關系資料庫中包含了豐富的操作,如插入、刪除、更新、查詢等,其中會涉及復雜的多表連接,通常是藉助多個表之間的主外鍵關聯來實現的。HBase操作則不存在復雜的表與表之間的關系,只有簡單的插入、查詢、刪除、清空等,因為HBase在設計上就避免了復雜的表與表之間的關系,通常只採用單表的主鍵查詢,所以它無法實現像關系資料庫中那樣的表與表之間的連接操作。
3.存儲模式。關系資料庫是基於行模式存儲的,元祖或行會被連續地存儲在磁碟頁中。在讀取數據時,需要順序掃描每個元組,然後從中篩選出查詢所需要的屬性。如果每個元組只有少量屬性的值對於查詢是有用的,那麼基於行模式存儲就會浪費許多磁碟空間和內存帶寬。HBase是基於列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的,它的優點是:可以降低I/O開銷,支持大量並發用戶查詢,因為僅需要處理可以回答這些查詢的列,而不是處理與查詢無關的大量數據行;同一個列族中的數據會被一起進行壓縮,由於同一列族內的數據相似度較高,因此可以獲得較高的數據壓縮比。
4.數據索引。關系資料庫通常可以針對不同列構建復雜的多個索引,以提高數據訪問性能。與關系資料庫不同的是,HBase只有一個索引——行鍵,通過巧妙的設計,HBase中所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使整個系統不會慢下來。由於HBase位於Hadoop框架之上,因此可以使用Hadoop MapRece來快速、高效地生成索引表。
6.數據維護。在關系資料庫中,更新操作會用最新的當前值去替換記錄中原來的舊值,舊值被覆蓋後就不會存在。而在HBase中執行更新操作時,並不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍舊保留。
7.可伸縮性。關系資料庫很難實現橫向擴展,縱向擴展的空間也比較有限。相反,HBase和BigTable這些分布式資料庫就是為了實現靈活的水平擴展而開發的,因此能夠輕易地通過在集群中增加或者減少硬體數量來實現性能的伸縮。
但是,相對於關系資料庫來說,HBase也有自身的局限性,如HBase不支持事務,因此無法實現跨行的原子性。
註:本來也想來問這個問題,然後復制一下的。結果找不到,只好自己手打了,麻煩復制拿去用的同學點下贊唄。
② Hbase的特性有哪些
HBase不是一個關系型資料庫,它需要不同的方法定義你的數據模型,HBase實際上定義了一個四維數據模型,下面就是每一維度的定義:
行鍵:每行都有唯一的行鍵,行鍵沒有數據類型,它內部被認為是一個位元組數組。
列簇:數據在行中被組織成列簇,每行有相同的列簇,但是在行之間,相同的列簇不需要有相同的列修飾符。在引擎中,HBase將列簇存儲在它自己的數據文件中,所以,它們需要事先被定義,此外,改變列簇並不容易。
列修飾符:列簇定義真實的列,被稱之為列修飾符,你可以認為列修飾符就是列本身。
版本:每列都可以有一個可配置的版本數量,你可以通過列修飾符的制定版本獲取數據。
③ 為什麼說HBase是列式資料庫
Hbase是一個面向列存儲的分布式存儲系統,它的優點在於可以實現高性能的並發讀寫操作,同時Hbase還會對數據進行透明的切分,這樣就使得存儲本身具有了水平伸縮性。
通常,順序讀取數據要比隨機訪問更快。而且,硬碟定址時間的提升比起CPU速度的進步要慢得多 (參看摩爾定律),在使用硬碟作為存儲媒介的系統上這種情況很可能還會持續一段時間。
下面簡單羅列了一些選擇行資料庫還是列資料庫的權衡依據。當然,如果能夠把數據全放在內存中,那麼使用內存資料庫性能會更好。
特點:
因為硬碟定址時間相較於計算機上其他部件的運行速度來說不是一般的慢,所以常用相同工作負載下的硬碟訪問性能來比較行資料庫和列資料庫。
在只需要根據某幾列來聚合數據的時候按列的數據組織方式更有效。因為這樣只需要讀取一部分數據,要比讀取全部數據更快。
當只需要修改某一列值的時候按列的數據組織方式更有效。因為可以直接找到某列數據並改,而與行中的其他列無關。
④ HBase是什麼為什麼要使用HBase
HBase在產品中還包含了Jetty,在HBase啟動時採用嵌入式的方式來啟動Jetty,因此可以通過web界面對HBase進行管理和查看當前運行的一些狀態,非常輕巧。為什麼採用HBase?HBase 不同於一般的關系資料庫,它是一個適合於非結構化數據存儲的資料庫.所謂非結構化數據存儲就是說HBase是基於列的而不是基於行的模式,這樣方面讀寫你的大數據內容。 HBase是介於Map Entry(key & value)和DB Row之間的一種數據存儲方式。就點有點類似於現在流行的Memcache,但不僅僅是簡單的一個key對應一個 value,你很可能需要存儲多個屬性的數據結構,但沒有傳統資料庫表中那麼多的關聯關系,這就是所謂的鬆散數據。 簡單來說,你在HBase中的表創建的可以看做是一張很大的表,而這個表的屬性可以根據需求去動態增加,在HBase中沒有表與表之間關聯查詢。你只需要 告訴你的數據存儲到Hbase的那個column families 就可以了,不需要指定它的具體類型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事務此類的功 能。 Apache HBase 和Google Bigtable 有非常相似的地方,一個數據行擁有一個可選擇的鍵和任意數量的列。表是疏鬆的存儲的,因此用戶可以給行定義各種不同的列,對於這樣的功能在大項目中非常實用,可以簡化設計和升級的成本。
⑤ hbase的特點
hbase的特點:高可靠性、高性能、面向列、可伸縮的。
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。
HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關系資料庫,它是一個適合於非結構化數據存儲的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。
(5)hbase是什麼資料庫擴展閱讀
訪問介面:
1. Native Java API,最常規和高效的訪問方式,適合Hadoop MapRece Job並行批處理HBase表數據
2. HBase Shell,HBase的命令行工具,最簡單的介面,適合HBase管理使用
3. Thrift Gateway,利用Thrift序列化技術,支持C++,PHP,Python等多種語言,適合其他異構系統在線訪問HBase表數據
4. REST Gateway,支持REST 風格的Http API訪問HBase, 解除了語言限制
5. Pig,可以使用Pig Latin流式編程語言來操作HBase中的數據,和Hive類似,本質最終也是編譯成MapRece Job來處理HBase表數據,適合做數據統計。
⑥ HBase和oracle,Hadoop的區別
Hbase作為Hadoop下的一個子項目,目前發展比較強大,和傳統的關系型資料庫oracle來比,兩者各有優缺點,我們先看一個簡單的表格。
數據維護:比如更新,只是按照key值插入新的記錄,舊版本還在,會在storefile合並過程中進行刪除數據維護:增刪查改非常方便,直接修改
以上簡單羅列了Hbase和Oracle兩者的區別,還有其他更細節的地方這里就沒有描述,可以從上面的對比看出,兩者完全應用於不同個場景。
在Hbase架構中,由於底層的HDFS不支持追加,更新。所以在Hbase中,所有的操作都是寫入,寫操作都是先寫入Memstore內存中,當達到閥值時,才窮flashcache進程寫入storefile,每次寫入都會形成一個新的storefile,當需要更新,刪除的時候,根據key值按照時間戳插入一個新的記錄,老版本記錄依舊存在,可以通過時間戳查詢老版本的記錄,當storefile達到一定的閥值,系統會進行合並,合並過程中會進行版本合並和刪除工作,形成更大的storefile。
Oracle在插入,寫操作的時候,一般情況下也會先寫入內存,然後由DBWR進程調度寫入到數據文件,如果在插入的時候使用append追加,則數據不會通過SGA,直接追加到數據文件,在Hbase中沒有此功能。
⑦ Hbase與HDFS是個什麼關系
他們的關系是:hbase是一個內存資料庫,而hdfs是一個存儲空間;是物品和房子的關系。
hdfs只是一個存儲空間,他的完整名字是分布式文件系統。從名字可知他的作用了。
hbase是一個內存資料庫,簡單點說hbase把表啊什麼的存在hdfs上。
⑧ hbase 是什麼
Apache HBase™ is the Hadoop database, a distributed, scalable, big data store.
--來自Apache HBase官網
HBase是一個分布式的、面向列的開源資料庫,該技術來源於 Fay Chang 所撰寫的Google論文「Bigtable:一個結構化數據的分布式存儲系統」。
就像Bigtable利用了Google文件系統(File
System)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似於Bigtable的能力。HBase是Apache的Hadoop
項目的子項目。HBase不同於一般的關系資料庫,它是一個適合於非結構化數據存儲的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。
--來自網路
⑨ hbase是怎樣刪除和修改數據的,和oracle這類傳統的rdbms有什麼區別
簡單來說,傳統關系型資料庫的修改與刪除,可以快速通過主鍵、列或索引直接鎖定到某一行或某些行,進行物理刪除。
而對於Hbase來說,受到hdfs文件系統的局限(hdfs文件系統不能修改,添加也很不方便),進行CRUD的操作就會變得相對復雜。
Hbase的修改,是根據某個行鍵添加一行數據,並未這行數據生成一個較新的時間戳來實現,每個行鍵都會對應多個時間戳的數據,那麼最新的時間戳就是最終修改後的內容。
而刪除則是通過標記來實現,如果要刪除某行記錄,Hbase會添加一個帶有刪除標記的行,通過這個刪除標記來辨認該行建的數據是否刪除。
Hbase與關系型資料庫的區別:
1、場景
Hbase是面向列的資料庫,適合大量的插入的同時又要具備不俗的讀功能,而Oracle或其他關系型資料庫適合處理比較復雜的業務關系或事務處理,而且,在數據在一定量級下都會有良好的表現,並不是所有業務的數據壓力都會發生比較極端的情況。
2、索引
Hbase只能做主鍵索引,而關系型資料庫可以根據需求不同加入適合的索引機制,供用戶查詢。
3、瓶頸
Hbase的瓶頸是硬碟的傳輸速度,Oracle的瓶頸是硬碟的尋道時間(可以看做是硬碟的轉數)。
4、業務
Hbase適合按照時間排序的業務,而Oracle或其他關系型資料庫應用比較廣泛,如OLTP或OLAP