官术网_书友最值得收藏!

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是對關系數據庫的一種補充。

主站蜘蛛池模板: 柳林县| 周宁县| 凌源市| 普宁市| 邵阳县| 旌德县| 兴义市| 平塘县| 韶山市| 芜湖县| 盖州市| 大港区| 锦州市| 顺平县| 金昌市| 天水市| 腾冲县| 思茅市| 花垣县| 赫章县| 辰溪县| 涿州市| 兴宁市| 大城县| 溆浦县| 凤山市| 会昌县| 丽江市| 阿拉善右旗| 会理县| 大化| 新疆| 和顺县| 青神县| 黎川县| 中山市| 北碚区| 旺苍县| 铜川市| 西城区| 克拉玛依市|