- HBase入門與實踐(第2版)
- 彭旭
- 689字
- 2022-12-01 19:15:36
1.2 NoSQL與傳統RDBMS
NoSQL是Not only SQL的縮寫,泛指非關系數據庫,如HBase、MangoDB、Cassandra等。與傳統的關系數據庫相比,NoSQL最大的特征就是數據存儲不需要一個特定的模式,并具有強大的水平擴展能力。
隨著“大數據時代”的到來,特別是超大規模與高并發的社交類型網站的誕生,傳統的關系數據庫在以下幾個方面已經無法滿足這些應用系統架構在橫向擴展方面的需求了。
(1)并發性:關系數據庫更依賴單機性能,對于上萬的每秒查詢數(Query Per Second,QPS),硬盤I/O無法支撐,并且關系數據庫除了寫數據還要寫索引,而NoSQL,以HBase為例,寫入為順序寫入,如果能夠容忍部分數據丟失,不寫入預寫入日志(Write-Ahead-Log,WAL),HBase寫入只需寫內存,速度大大提高。同時HBase通過分片可以將一臺機器的壓力均衡地轉移到集群的每一臺機器。
(2)可擴展性:現在一般的在線系統可用性至少要求達到99.9%,對于淘寶、天貓這種與金錢密切相關的系統,可用性要求就更高了。傳統關系數據庫的升級和擴展對于系統的可用性是一個很頭疼的問題,可能需要停機遷移數據、重啟加載新配置等,而且需要運維人員、開發人員、數據庫管理員(Database Administrator,DBA)的密切配合,而HBase集群具有線性伸縮、自動容災和負載均衡的優勢,可以很容易地增加或者替換集群節點以擴展集群的存儲和計算能力。
(3)數據模型:關系數據庫需要為存儲的數據預先定義表結構與字段名,而NoSQL無須事先為需要存儲的數據定義一個模式,這樣可以更容易、更靈活地適配各種類型的非結構化數據。
當然,并不是說NoSQL已經全面優于關系數據庫了。NoSQL相比關系數據庫也有很多缺點,例如HBase不支持多行事務;基于LSM存儲模型導致NoSQL需要讀取多個文件來找到需要的數據,這樣會犧牲一些讀的性能。可以說NoSQL是對關系數據庫的一種補充。
- Getting Started with Gulp(Second Edition)
- Web前端開發技術:HTML、CSS、JavaScript(第3版)
- Bootstrap Site Blueprints Volume II
- Android 9 Development Cookbook(Third Edition)
- 面向對象程序設計(Java版)
- 可解釋機器學習:模型、方法與實踐
- 表哥的Access入門:以Excel視角快速學習數據庫開發(第2版)
- Linux:Embedded Development
- Android移動開發案例教程:基于Android Studio開發環境
- Python3.5從零開始學
- MySQL程序員面試筆試寶典
- Machine Learning for Developers
- Machine Learning for OpenCV
- Java程序設計實用教程(第2版)
- Flink入門與實戰