文章目錄
NoSQL:
什麼是NoSQL?:
not only SQL —非關係型數據庫
- 不遵循
傳統RDBMS模型
的數據庫 - 數據是
非關係的
,且不使用SQL作爲主要查詢語言 - 解決數據庫的
可伸縮性
和可用性
問題–快速擴容
- 不針對
原子性
和一致性
問題–
NoSQL和關係型數據庫對比:
對比 | NoSQL | 關係型數據庫 |
---|---|---|
常用數據庫 | HBase,MongoDB,Redis | Oracle,DB2,mysql |
存儲格式 | 文檔,鍵值對,圖結構 | 表格式,行和列 |
存儲規範 | 鼓勵冗餘 | 規範性,避免重複-三大範式 |
存儲擴展 | 橫向擴展,分佈式 | 縱向擴展(橫向擴展有限) |
查詢 | 非結構性語言 | 結構化語言 |
事務 | 不支持事務一致性 | 支持事務 |
性能 | 讀寫性能高 | 讀寫性能差 |
成本 | 簡單易部署,開源,成本低 | 成本高 |
NoSQL的特點:
- 最終一致性—異步性-只有在最後才知道
- 應用程序增加了維護一致性和處理事務等職責
- 冗餘數據存儲
NoSQL的相關概念:
-
三大基石
-
CAP&BASE&最終一致性
CAP
:一個分佈式系統不能同時滿足最終一致性
,可用性
和分區容錯性
最終一致性 Consistency
:任何一個讀操作總是讀取到之前完成的寫操作結果,不是強一致性,不能同時拿到。可用性 Availability
:一直可以正常的做讀寫操作。簡單而言就是客戶端一直可以正常訪問並得到系統的正常響應。用戶角度來看就是不會出現系統操作失敗或者訪問超時等問題。----只要收到用戶的請求,服務器就必須給出迴應。分區容錯性 Partition tolerance
:分佈式系統在遇到某節點或網絡分區故障的時候,仍然能夠對外提供滿足一致性和可用性的服務
HBase屬於CP範疇,所以我們在工作中更關注保護他的高可用性
-
NoSQL分類:
分類 | 舉例 | 典型應用場景 |
---|---|---|
鍵值存儲數據庫 (key-value) | Redis, MemcacheDB, Voldemort | 內容緩存等 |
列存儲數據庫 (WIDE COLUMN STORE) |
Cassandra, HBase | 應對分佈式存儲的海量數據 |
文檔型數據庫 (DOCUMENT STORE) | CouchDB, MongoDB | Web應用(可看做鍵值數據庫的升級版) |
圖數據庫 (GRAPH DB) |
Neo4J, InfoGrid, Infinite Graph | 社交網絡,推薦系統等,專注於構建關係圖譜 |
NoSQL和BI大數據的關係:
- BI(Business Intelligence):商務智能
- 一套完整的解決方案
- BI應用涉及模型,模型依賴於模式
- BI主要支持標準SQL,對NoSQL支持弱於關係型數據庫
- NoSQL和大數據相關性較高:
- 通常大數據場景採用列存儲數據庫
- Hbase和Hadoop
HBase:
Hbase特點:
- 數據訪問速度快
- 支持隨機讀寫
- 可擴展性
Hbase應用場景:
- 增量數據-時間序列數據
- 高容量-高速寫入
- 信息交換-消息傳遞
- 高容量-高速讀寫
- 內容服務-web後端應用程序
- 高容量-高速讀寫
Hbase物理架構具體劃分:
Hbase採用
Master/Slave架構
物理架構圖:
一:HMaster的作用:
- 是HBase集羣的主節點,可以配置多個,用來實現HA
- 管理和分配Region
- 負責RegionServer的負載均衡
- 發現失效的RegionServer並重新分配期上的Region
二:RegionServer的作用:
負責管理維護Region
- 一個RegionServer包含一個WAL,一個BlockCache和多個Region
- 一個Region包含多個存儲區,每個存儲區對應一個列族
三:HStore的作用:
- 一個存儲區由多個
StoreFile
和MemFile
組成 - 一個
StoreFile對應一個列簇
HBase邏輯架構:
- Rowkey(行鍵)是唯一的並己排序
- schema可以定義何時插入記錄
- 每個row都可以定義自己的列,即使其他的row不使用
- 使用唯一時間戳維護多個row版本
- hbase數據全部以字節存儲
HBase數據管理:
-
數據管理目錄:
-
HBase數據在HDFS上:
meta在hmaster上
root表在zookeeper上
HBase架構特點:
- 強一致性
- 自動切割