什么是 NoSQL 数据库、NoSQL 与 SQL 的区别
前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到教程。
NoSQL 數(shù)據(jù)庫是針對可擴展性能和無架構(gòu)數(shù)據(jù)模型進行了優(yōu)化的非關(guān)系數(shù)據(jù)庫。
NoSQL 數(shù)據(jù)庫也因其易于開發(fā)、延遲低且具有彈性而得到廣泛認可。
此類數(shù)據(jù)庫可使用各種數(shù)據(jù)模型,包括列式、文檔、圖形和內(nèi)存鍵值存儲。
?
?
NoSQL 數(shù)據(jù)庫如何運作?
NoSQL 數(shù)據(jù)庫系統(tǒng)可使用各種模型進行數(shù)據(jù)管理,例如內(nèi)存鍵值存儲、圖形數(shù)據(jù)模型和文檔存儲。
此類數(shù)據(jù)庫針對需要大數(shù)據(jù)量、低延遲和靈活數(shù)據(jù)模型的應(yīng)用程序進行了優(yōu)化,
這是通過放松傳統(tǒng)關(guān)系數(shù)據(jù)庫的一些數(shù)據(jù)一致性限制實現(xiàn)的。
?
為何使用 NoSQL 數(shù)據(jù)庫?
NoSQL 數(shù)據(jù)庫非常適合許多大數(shù)據(jù)、移動和 Web 應(yīng)用程序,
因為傳統(tǒng)關(guān)系數(shù)據(jù)庫的可擴展性和響應(yīng)能力無法滿足其需求。
由于數(shù)據(jù)結(jié)構(gòu)更簡單且可水平擴展,NoSQL 數(shù)據(jù)庫通常比關(guān)系數(shù)據(jù)庫響應(yīng)速度更快且更易擴展。
?
SQL 與 NoSQL 數(shù)據(jù)庫比較
關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 和非關(guān)系 (NoSQL) 數(shù)據(jù)庫各有優(yōu)劣。
在 RDBMS 中,您可以靈活查詢數(shù)據(jù),但查詢成本相對較高,并且在高流量的情況下無法有效擴展。
在 NoSQL 數(shù)據(jù)庫中,您只能通過幾種方式有效查詢數(shù)據(jù),否則查詢成本高且速度慢。
?
?
| ? | 關(guān)系數(shù)據(jù)庫 | NoSQL 數(shù)據(jù)庫 |
| 數(shù)據(jù)模型 | 關(guān)系模型可將數(shù)據(jù)標準化為由行和列組成的表。采用一種架構(gòu)來嚴格定義表、行、列、索引、各個表之間的關(guān)系及其他數(shù)據(jù)庫元素。 | NoSQL 數(shù)據(jù)庫一般不會實施架構(gòu)。一般使用分區(qū)鍵來檢索值、列集或半結(jié)構(gòu)化 JSON、XML 或其他包含相關(guān)項目屬性的文檔。 |
| ACID 屬性 | 傳統(tǒng)的 RDBMS 支持關(guān)系數(shù)據(jù)庫的 ACID 屬性:原子性、一致性、隔離性和持久性。原子性表示“全有或全無”,即完全執(zhí)行或完全不執(zhí)行某項事務(wù)。一致性表示事務(wù)提交之后,數(shù)據(jù)必須符合數(shù)據(jù)庫架構(gòu)。隔離性要求并發(fā)事務(wù)應(yīng)分別執(zhí)行,互不干擾。持久性即能夠從意外系統(tǒng)故障或斷電情況中恢復(fù)到上一個已知狀態(tài)。 | 為了獲得更為靈活且可水平擴展的數(shù)據(jù)模型,NoSQL 數(shù)據(jù)庫通常會放棄傳統(tǒng) RDBMS 的部分 ACID 屬性。憑借這些特性,當傳統(tǒng)的 RDBMS 遇到架構(gòu)方面的挑戰(zhàn)時,NoSQL 數(shù)據(jù)庫便成了最佳選擇,可用來克服一系列問題,包括性能瓶頸、可擴展性、運營復(fù)雜性和不斷增加的管理和支持成本。 |
| 性能 | 性能一般取決于磁盤子系統(tǒng)。要獲得最佳性能,就需要優(yōu)化查詢、索引和表結(jié)構(gòu)。 | 性能通常由底層硬件集群大小、網(wǎng)絡(luò)延遲以及調(diào)用應(yīng)用程序來決定。 |
| 擴展 | 進行縱向擴展最簡單的方式是利用運行更快的硬件。您需要追加投資才能獲得跨分布式系統(tǒng)的關(guān)系表。 | 旨在利用低成本硬件的分布式群集進行橫向擴展,從而在不增加延遲的前提下提高吞吐量。 |
| API | 存儲和檢索數(shù)據(jù)的請求由符合結(jié)構(gòu)化查詢語言 (SQL) 的查詢來傳達。這些查詢由 RDBMS 解析和執(zhí)行。 | 借助基于對象的 API,應(yīng)用程序開發(fā)人員可以輕松存儲和檢索內(nèi)存數(shù)據(jù)結(jié)構(gòu)。通過分區(qū)鍵,應(yīng)用程序可以查找鍵值對、列集或包含序列化應(yīng)用程序?qū)ο蠛蛯傩缘陌虢Y(jié)構(gòu)化文檔。 |
| 工具 | SQL 數(shù)據(jù)庫一般會提供一組豐富的工具,用于簡化數(shù)據(jù)庫驅(qū)動型應(yīng)用程序的開發(fā)流程。 | 而 NoSQL 數(shù)據(jù)庫一般會提供多種工具來管理集群和擴展。應(yīng)用程序是底層數(shù)據(jù)的主要接口。 |
?
?
NoSQL 數(shù)據(jù)庫的不同類型
有四種常見的 NoSQL 數(shù)據(jù)庫類型:列式、文檔、圖形和內(nèi)存鍵值。
通常,這些數(shù)據(jù)庫在存儲、訪問和結(jié)構(gòu)化數(shù)據(jù)的方式上有所差異,但都針對不同的使用案例和應(yīng)用程序進行了優(yōu)化。?
?
?
?
SQL 與 NoSQL 術(shù)語比較
| SQL | MongoDB (NoSQL) | DynamoDB (NoSQL) | Cassandra (NoSQL) | Couchbase (NoSQL) |
| 表 | 集合 | 表 | 表 | 數(shù)據(jù)存儲桶 |
| 行 | 文檔 | 項目 | 行 | 文檔 |
| 列 | 字段 | 屬性 | 列 | 字段 |
| 主鍵 | 對象 ID | 主鍵 | 主鍵 | 文檔 ID |
| 索引 | 索引 | 二級索引 | 索引 | 索引 |
| 視圖 | 視圖 | 全局二級索引 | 具體化視圖 | 視圖 |
| 嵌套表或?qū)ο?/td> | 嵌入文檔 | 映射 | 映射 | 映射 |
| 數(shù)組 | 數(shù)組 | 列表 | 列表 | 列表 |
?
轉(zhuǎn)自:
https://aws.amazon.com/cn/nosql/?nc1=f_cc?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的什么是 NoSQL 数据库、NoSQL 与 SQL 的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebUserControl归纳
- 下一篇: 解决 Unable to transla