
其它相關推薦:
系統(tǒng)架構之微服務架構
系統(tǒng)架構設計之微內(nèi)核架構
鴻蒙操作系統(tǒng)架構
架構設計之大數(shù)據(jù)架構(Lambda架構、Kappa架構)文章來源:http://www.zghlxwxcb.cn/news/detail-738687.html
所屬專欄:系統(tǒng)架構設計師文章來源地址http://www.zghlxwxcb.cn/news/detail-738687.html
一. 什么是NoSQL?
NoSQL(Not-onlySQL):不僅僅只是SQL,泛指非關系型的數(shù)據(jù)庫。
是對關系型數(shù)據(jù)庫的補充和完善,它不使用傳統(tǒng)的表格模式,而是使用其他的數(shù)據(jù)模型來存儲數(shù)據(jù)。NoSQL數(shù)據(jù)庫非常適合處理大規(guī)模的非結構化或半結構化數(shù)據(jù),具有高可擴展性、高靈活性、高性能、高可用性等特點。常見的NoSQL數(shù)據(jù)庫包括MongoDB、Cassandra、Redis等。
二. NoSQL分類
- 鍵值(key-value)
- 這種類型的數(shù)據(jù)庫有Redis、Memcached、Tokyo Cabinet/Tyrant、Voldement、Oracle BDB
- 典型應用場景:內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問負載,也用于一些日志系統(tǒng)等等。
- 數(shù)據(jù)模型:key 指向 value 的鍵值對,通常用hash table來實現(xiàn)。
- 優(yōu)點:查找速度快。
- 缺點:數(shù)據(jù)無結構化,通常只被當作字符串或者二進制數(shù)據(jù)。
- 列存儲數(shù)據(jù)庫
- 這種類型的數(shù)據(jù)庫有Hbase、Cassandra、Riak
- 典型應用場景:分布式的文件系統(tǒng)。
- 數(shù)據(jù)模型:以列簇式存儲,將同一列數(shù)據(jù)存在一起。
- 優(yōu)點:查找速度快,可擴展性強,更容易進行分布式擴展。
- 缺點:功能相對局限。
- 文檔型數(shù)據(jù)庫
- 這種類型的數(shù)據(jù)庫有MongoDB、CouchDB
- 典型應用場景:Web應用(與key-value類似,value是結構化的,不同的是數(shù)據(jù)庫能夠了解value內(nèi)容)
- 數(shù)據(jù)模型:key-value對應的鍵值對,value為結構化數(shù)據(jù)。
- 優(yōu)點:數(shù)據(jù)結構要求不嚴格,表結構可變,不需要像關系型數(shù)據(jù)庫一樣預先定義表結構。這種數(shù)據(jù)庫類型按照文檔格式(如JSON、XML等)來存儲數(shù)據(jù),數(shù)據(jù)之間可以有嵌套關系,具有更好的靈活性,支持各種復雜的數(shù)據(jù)結構。支持動態(tài)模式、可擴展性好、數(shù)據(jù)結構靈活。
- 缺點:查詢性能不高,而且缺乏統(tǒng)一的查詢語法。
- 圖形數(shù)據(jù)庫(Graph)
- 這種類型的數(shù)據(jù)庫有Neo4J、InfoGrid、Infinite Graph
- 典型應用場景:社交網(wǎng)絡,推薦系統(tǒng)等。專注于構建關系圖譜。
- 數(shù)據(jù)模型:圖結構。
- 優(yōu)點:利用圖結構相關算法。比如最短路徑尋址,N度關系查找等。
-
缺點:很多時候需要對整個圖做計算才能得出需要的信息,而且這種結構不太好做分布式存的集群方案。
三. NoSQL與關系數(shù)據(jù)庫有什么區(qū)別
對比維度 | 關系數(shù)據(jù)庫 | NoSQL |
---|---|---|
應用領域 | 面向通用領域 | 特定應用領域 |
數(shù)據(jù)容量 | 有限數(shù)據(jù) | 海量數(shù)據(jù) |
數(shù)據(jù)類型 | 結構化數(shù)據(jù)(二維表) | 非結構化數(shù)據(jù) |
并發(fā)支持 | 支持并發(fā),但性能低 | 高并發(fā) |
事務支持 | 高事務性 | 弱事務性 |
擴展方式 | 向上擴展 | 向外擴展 |
與關系型數(shù)據(jù)庫相比,NoSQL數(shù)據(jù)庫對數(shù)據(jù)之間的關系的處理更加靈活,因此可以滿足更多種類的應用場景,例如大數(shù)據(jù)、云計算、分布式存儲等。
四. NoSQL主要優(yōu)勢和缺點
主要優(yōu)勢:
(1)避免不必要的復雜性
(2)高吞吐量
(3)高水平擴展能力和低端硬件集群
(4)避免了昂貴的對象-關系映射
缺點:
(1)數(shù)據(jù)模型和查詢語言沒有經(jīng)過數(shù)學驗證
(2)不支持ACID特性
(3)功能簡單
(4)沒有統(tǒng)一的查詢模型
五. NoSQL體系框架
NoSQL數(shù)據(jù)庫整體框架分為四層,分別為數(shù)據(jù)持久層(data persistence)、整體分布層(data distribution model)、數(shù)據(jù)邏輯模型層(data logical model)和接口層(interface),這四層之間是相輔相成,協(xié)調(diào)工作。
數(shù)據(jù)持久層定義了數(shù)據(jù)的存儲形式,主要包括基于內(nèi)存、硬盤、內(nèi)存與硬盤相結合、訂制可插拔四種形式。基于內(nèi)存形式的數(shù)據(jù)存取速度最快,但可能會造成數(shù)據(jù)丟失;基于硬盤的數(shù)據(jù)可能保存很久,但存取速度較基于內(nèi)存的形式慢;內(nèi)存和硬盤相結合的形式,結合了前兩種形式的優(yōu)點,既保證了速度,又保證了數(shù)據(jù)不丟失;訂制可插拔則保證了數(shù)據(jù)存取具有較高的靈活性。
整體分布層定義了數(shù)據(jù)是如何分布的,相對于關系型數(shù)據(jù)庫,NoSQL可選的機制比較多,主要有三種形式:一是CAP支持,可用于水平擴展。
數(shù)據(jù)邏輯模型層定義了數(shù)據(jù)之間的聯(lián)系和操作方式,主要包括文檔、鍵值對、圖像、列存儲等。
接口層定義了與數(shù)據(jù)訪問相關的接口,包括查詢、索引、事務、權限等。
其它相關推薦:
系統(tǒng)架構之微服務架構
系統(tǒng)架構設計之微內(nèi)核架構
鴻蒙操作系統(tǒng)架構
架構設計之大數(shù)據(jù)架構(Lambda架構、Kappa架構)
所屬專欄:系統(tǒng)架構設計師
到了這里,關于NoSQL數(shù)據(jù)庫使用場景以及架構介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!