前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
NoSQL 數據庫是針對可擴展性能和無架構數據模型進行了優化的非關系數據庫。
NoSQL 數據庫也因其易于開發、延遲低且具有彈性而得到廣泛認可。
此類數據庫可使用各種數據模型,包括列式、文檔、圖形和內存鍵值存儲。
?
?
NoSQL 數據庫如何運作?
NoSQL 數據庫系統可使用各種模型進行數據管理,例如內存鍵值存儲、圖形數據模型和文檔存儲。
此類數據庫針對需要大數據量、低延遲和靈活數據模型的應用程序進行了優化,
這是通過放松傳統關系數據庫的一些數據一致性限制實現的。
?
為何使用 NoSQL 數據庫?
NoSQL 數據庫非常適合許多大數據、移動和 Web 應用程序,
因為傳統關系數據庫的可擴展性和響應能力無法滿足其需求。
由于數據結構更簡單且可水平擴展,NoSQL 數據庫通常比關系數據庫響應速度更快且更易擴展。
?
SQL 與 NoSQL 數據庫比較
關系數據庫管理系統 (RDBMS) 和非關系 (NoSQL) 數據庫各有優劣。
在 RDBMS 中,您可以靈活查詢數據,但查詢成本相對較高,并且在高流量的情況下無法有效擴展。
在 NoSQL 數據庫中,您只能通過幾種方式有效查詢數據,否則查詢成本高且速度慢。
?
?
? | 關系數據庫 | NoSQL 數據庫 |
數據模型 | 關系模型可將數據標準化為由行和列組成的表。采用一種架構來嚴格定義表、行、列、索引、各個表之間的關系及其他數據庫元素。 | NoSQL 數據庫一般不會實施架構。一般使用分區鍵來檢索值、列集或半結構化 JSON、XML 或其他包含相關項目屬性的文檔。 |
ACID 屬性 | 傳統的 RDBMS 支持關系數據庫的 ACID 屬性:原子性、一致性、隔離性和持久性。原子性表示“全有或全無”,即完全執行或完全不執行某項事務。一致性表示事務提交之后,數據必須符合數據庫架構。隔離性要求并發事務應分別執行,互不干擾。持久性即能夠從意外系統故障或斷電情況中恢復到上一個已知狀態。 | 為了獲得更為靈活且可水平擴展的數據模型,NoSQL 數據庫通常會放棄傳統 RDBMS 的部分 ACID 屬性。憑借這些特性,當傳統的 RDBMS 遇到架構方面的挑戰時,NoSQL 數據庫便成了最佳選擇,可用來克服一系列問題,包括性能瓶頸、可擴展性、運營復雜性和不斷增加的管理和支持成本。 |
性能 | 性能一般取決于磁盤子系統。要獲得最佳性能,就需要優化查詢、索引和表結構。 | 性能通常由底層硬件集群大小、網絡延遲以及調用應用程序來決定。 |
擴展 | 進行縱向擴展最簡單的方式是利用運行更快的硬件。您需要追加投資才能獲得跨分布式系統的關系表。 | 旨在利用低成本硬件的分布式群集進行橫向擴展,從而在不增加延遲的前提下提高吞吐量。 |
API | 存儲和檢索數據的請求由符合結構化查詢語言 (SQL) 的查詢來傳達。這些查詢由 RDBMS 解析和執行。 | 借助基于對象的 API,應用程序開發人員可以輕松存儲和檢索內存數據結構。通過分區鍵,應用程序可以查找鍵值對、列集或包含序列化應用程序對象和屬性的半結構化文檔。 |
工具 | SQL 數據庫一般會提供一組豐富的工具,用于簡化數據庫驅動型應用程序的開發流程。 | 而 NoSQL 數據庫一般會提供多種工具來管理集群和擴展。應用程序是底層數據的主要接口。 |
?
?
NoSQL 數據庫的不同類型
有四種常見的 NoSQL 數據庫類型:列式、文檔、圖形和內存鍵值。
通常,這些數據庫在存儲、訪問和結構化數據的方式上有所差異,但都針對不同的使用案例和應用程序進行了優化。?
?
- 列式數據庫針對讀取和寫入數據列(而不是數據行)進行了優化。適用于數據庫表的列式存儲是分析查詢性能的一大要素,因為它極大地降低了整體磁盤 I/O 要求,并減少了您需要從磁盤加載的數據量。
- 文檔數據庫旨在將半結構化數據存儲為文檔,通常采用 JSON 或 XML 格式。與傳統關系數據庫不同的是,每個 NoSQL 文檔的架構是不同的,可讓您更加靈活地整理和存儲應用程序數據并減少可選值所需的存儲。
- 圖形數據庫可存儲頂點以及稱為邊緣的直接鏈路。圖形數據庫可以在 SQL 和 NoSQL 數據庫上構建。頂點和邊緣可以擁有各自的相關屬性。
- 內存鍵值存儲是針對讀取密集型應用程序工作負載(例如社交網絡、游戲、媒體共享和 Q&A 門戶)或計算密集型工作負載(例如推薦引擎)進行了優化的 NoSQL 數據庫。內存緩存可將重要數據存儲在內存中以實現低延遲訪問,從而提高應用程序性能。
?
?
SQL 與 NoSQL 術語比較
SQL | MongoDB (NoSQL) | DynamoDB (NoSQL) | Cassandra (NoSQL) | Couchbase (NoSQL) |
表 | 集合 | 表 | 表 | 數據存儲桶 |
行 | 文檔 | 項目 | 行 | 文檔 |
列 | 字段 | 屬性 | 列 | 字段 |
主鍵 | 對象 ID | 主鍵 | 主鍵 | 文檔 ID |
索引 | 索引 | 二級索引 | 索引 | 索引 |
視圖 | 視圖 | 全局二級索引 | 具體化視圖 | 視圖 |
嵌套表或對象 | 嵌入文檔 | 映射 | 映射 | 映射 |
數組 | 數組 | 列表 | 列表 | 列表 |
?
轉自:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?