hbase實戰 (1 1 nosql介紹)

2021-06-21 02:52:46 字數 1998 閱讀 3647

nosql(nosql = not only sql),意思是不僅僅是sql的擴充套件,一般指的是非關係型的資料庫。

隨著網際網路web2.0**的興起,傳統的關聯式資料庫在應付web2.0**,特別是超大規模和高併發的sns型別的web2.0純動態**已經顯得力不從心,傳統的電信行業動輟就千萬甚至上億的資料,甚至有客戶提出需要儲存相關的日誌資料50年以上,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。

關係型資料庫難以克服的問題:

sql語言和關係型資料庫(mysql、postgresql、oracle等)是通用的資料解決方案,占有絕大多數的市場。但是就像上面提到的,它有很多難以解決的問題。不過在最近興起的nosql運動中,湧現出一批具備高可用性、支援線性擴充套件、支援map/reduce操作等特性的資料產品,它們具有如下特性:

使用這些資料產品並不是要取代原有的資料產品,而是為不同的應用場景提供更多的選擇。也就是說,在一些特定的情況下如果是關係型的資料庫解決不了的問題,那麼就可以考慮使用nosql,而不是說完全將應用移植到nosql上,畢竟適合才是最好的。

下面對現在的nosql進行了整理,其中包括各種nosql的官方**。

15個nosql資料庫

hbase是apache hadoop中的乙個子專案,hbase依託於hadoop的hdfs作為最基本儲存基礎單元,通過使用hadoop的dfs工具就可以看到這些這些資料 儲存資料夾的結構,還可以通過map/reduce的框架(演算法)對hbase進行操作,如下圖所示:

hbase在產品中還包含了jetty,在hbase啟動時採用嵌入式的方式來啟動jetty,因此可以通過web介面對hbase進行管理和檢視當前執行的一些狀態,非常輕巧方便。

hbase是apache hadoop中的乙個子專案,現已成為apache的頂級專案。

hbase是google bigtable(基於google file system)的開源山寨版本。

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資料庫儲存的對比。

行式儲存和列式儲存對比:

行式儲存

列式儲存

資料按列儲存——每一列單獨存放

資料即是索引

只訪問查涉及的列——大量降低系統io

每一列由乙個線索來處理——查詢的併發處理

資料型別一致,資料特徵相似——高效壓縮

hbase 是基於

下面的**中hbase和rdbms的對比關係

hbase

rdbms

資料型別

只有字串

豐富的資料型別

資料操作

簡單的增刪改查

各種各樣的函式,表連線

儲存模式

基於列儲存

基於**結構和行儲存

資料保護

更新後舊版本仍然會保留

替換可伸縮性

輕易的進行增加節點,相容性高

需要中間層,犧牲功能

hbase實戰 (1 1 nosql介紹)

nosql nosql not only sql 意思是不僅僅是sql的擴充套件,一般指的是非關係型的資料庫。隨著網際網路web2.0 的興起,傳統的關聯式資料庫在應付web2.0 特別是超大規模和高併發的sns型別的web2.0純動態 已經顯得力不從心,傳統的電信行業動輟就千萬甚至上億的資料,甚至...

HBase程式設計實戰

程式設計實現以下指定功能,並用hadoop提供的hbase shell命令完成相同任務 1 列出hbase所有的表的相關資訊,例如表名 public static void main string args throws ioexception if admin null admin.close i...

《HBase實戰》一導讀

hbase實戰 2008年秋季我開始和hbase結緣,當時它還是乙個新生專案,一年前剛剛發布。早期版本出來時,hbase表現很不錯,但是也不是沒有令人尷尬的缺陷。hbase專案當時有近10個軟體commiffer,作為乙個apache子專案還算不錯。接下來是nosql宣傳的高潮。當時專有名詞nosq...