< 返回新聞公共列表

SQL和NoSQL有何區(qū)別?

發(fā)布時(shí)間:2022-06-20 14:49:49

SQL是一種已有數(shù)十年歷史的訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)的方法,大多數(shù)使用數(shù)據(jù)庫(kù)的人都熟悉它。隨著非結(jié)構(gòu)化數(shù)據(jù)、存儲(chǔ)和處理能力的數(shù)量以及分析類型多年來(lái)的變化,我們已經(jīng)看到不同的數(shù)據(jù)庫(kù)技術(shù)變得更適合新類型的用例。這些數(shù)據(jù)庫(kù)通常稱為 NoSQL。那么SQL和NoSQL有何區(qū)別呢?下面小編給大家詳細(xì)分析一下:


SQL和NoSQL有何區(qū)別?.jpg


一、什么是 SQL 數(shù)據(jù)庫(kù)?

SQL 代表“結(jié)構(gòu)化查詢語(yǔ)言”,是自 1970 年代以來(lái)廣泛用于管理關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDBMS)中的數(shù)據(jù)的編程語(yǔ)言。早些年,當(dāng)存儲(chǔ)成本很高時(shí),SQL 數(shù)據(jù)庫(kù)專注于減少數(shù)據(jù)重復(fù)。

快進(jìn)到今天,SQL 仍然廣泛用于查詢關(guān)系數(shù)據(jù)庫(kù),其中數(shù)據(jù)存儲(chǔ)在以各種方式鏈接的行和表中。一個(gè)表記錄可以鏈接到另一個(gè)表記錄或許多其他表記錄,或者許多表記錄可能與另一個(gè)表中的許多記錄相關(guān)。這些提供快速數(shù)據(jù)存儲(chǔ)和恢復(fù)的關(guān)系數(shù)據(jù)庫(kù)可以處理大量數(shù)據(jù)和復(fù)雜的 SQL 查詢。

SQL 的工作原理:SQL 數(shù)據(jù)庫(kù)在處理結(jié)構(gòu)化數(shù)據(jù)或在其變量和實(shí)體之間具有關(guān)系的數(shù)據(jù)方面很有價(jià)值。

1、可擴(kuò)展性

通常,SQL 數(shù)據(jù)庫(kù)可以垂直擴(kuò)展,這意味著您可以通過(guò)遷移到更大的服務(wù)器來(lái)增加服務(wù)器的負(fù)載,從而增加更多的 CPU、RAM 或SSD功能。雖然最常使用垂直可擴(kuò)展性,但 SQL 數(shù)據(jù)庫(kù)也可以通過(guò)分片或分區(qū)邏輯進(jìn)行水平擴(kuò)展,盡管這并沒(méi)有得到很好的支持。

2、結(jié)構(gòu)

SQL 數(shù)據(jù)庫(kù)模式以關(guān)系、表格的方式組織數(shù)據(jù),使用具有列或?qū)傩缘谋砗陀涗浶小R驗(yàn)镾QL使用這種嚴(yán)格預(yù)定義的模式,所以它需要在開(kāi)始使用SQL數(shù)據(jù)庫(kù)之前組織和結(jié)構(gòu)化數(shù)據(jù)。

3、特性

使用SQL的 RDBMS 必須表現(xiàn)出四個(gè)屬性,即縮寫詞 ACID。這些可確保成功處理事務(wù)并確保 SQL 數(shù)據(jù)庫(kù)具有高度的可靠性。

原子性:所有事務(wù)必須完全成功或失敗,不能部分完成,即使在系統(tǒng)故障的情況下也是如此。

一致性:數(shù)據(jù)庫(kù)必須遵循在每一步驗(yàn)證和防止損壞的規(guī)則。

隔離:并發(fā)事務(wù)不能相互影響。

持久性:事務(wù)是最終的,即使系統(tǒng)故障也不能“回滾”一個(gè)完整的事務(wù)。

4、支持

由于 SQL 數(shù)據(jù)庫(kù)現(xiàn)在歷史悠久,它們擁有龐大的社區(qū),并且在線上有許多穩(wěn)定代碼庫(kù)的示例。有許多專家可以支持 SQL 和編程關(guān)系數(shù)據(jù)。

5、SQL數(shù)據(jù)庫(kù)示例:數(shù)據(jù)庫(kù)2;MySQL;PostgreSQL;裕嘉數(shù)據(jù)庫(kù)

蟑螂數(shù)據(jù)庫(kù);甲骨文數(shù)據(jù)庫(kù);微軟 SQL 服務(wù)器;Azure SQL數(shù)據(jù)庫(kù)。


二、什么是 NoSQL 數(shù)據(jù)庫(kù)?

NoSQL是一種非關(guān)系型數(shù)據(jù)庫(kù),這意味著它允許與 SQL 數(shù)據(jù)庫(kù)不同的結(jié)構(gòu)(不是行和列),并且可以更靈活地使用最適合數(shù)據(jù)的格式。“NoSQL”一詞直到 2000 年代初才被創(chuàng)造出來(lái)。這并不意味著系統(tǒng)不使用 SQL,因?yàn)?NoSQL 數(shù)據(jù)庫(kù)有時(shí)確實(shí)支持某些 SQL 命令。更準(zhǔn)確地說(shuō),“NoSQL”有時(shí)被定義為“不僅僅是 SQL”。

NoSQL的工作原理

與SQL不同,NoSQL系統(tǒng)允許您在數(shù)據(jù)庫(kù)中使用不同的數(shù)據(jù)結(jié)構(gòu)。因?yàn)樗鼈冊(cè)试S非結(jié)構(gòu)化數(shù)據(jù)的動(dòng)態(tài)模式,所以無(wú)需預(yù)先計(jì)劃和預(yù)先組織數(shù)據(jù),并且更容易進(jìn)行修改。NoSQL數(shù)據(jù)庫(kù)允許您添加新的屬性和字段,以及跨數(shù)據(jù)庫(kù)使用不同的語(yǔ)法。

1、可擴(kuò)展性

NoSQL 數(shù)據(jù)庫(kù)可以更好地橫向擴(kuò)展,這意味著可以根據(jù)需要添加額外的服務(wù)器或節(jié)點(diǎn)來(lái)增加負(fù)載。

2、結(jié)構(gòu)

NoSQL 數(shù)據(jù)庫(kù)不是關(guān)系型數(shù)據(jù)庫(kù),因此它們不僅僅將數(shù)據(jù)存儲(chǔ)在行和表中。相反,它們通常屬于以下四種結(jié)構(gòu)之一:

面向列的,其中數(shù)據(jù)存儲(chǔ)在幾乎無(wú)限數(shù)量的列而不是行中分組的單元格中。

鍵值存儲(chǔ),它使用關(guān)聯(lián)數(shù)組(也稱為字典或映射)作為其數(shù)據(jù)模型。該模型將數(shù)據(jù)表示為鍵值對(duì)的集合。

文檔存儲(chǔ),它使用文檔以標(biāo)準(zhǔn)格式保存和編碼數(shù)據(jù),包括 XML、YAML、JSON(JavaScript 對(duì)象表示法)和 BSON。一個(gè)好處是單個(gè)數(shù)據(jù)庫(kù)中的文檔可以具有不同的數(shù)據(jù)類型。

圖形數(shù)據(jù)庫(kù),它表示圖形上的數(shù)據(jù),顯示不同的數(shù)據(jù)集如何相互關(guān)聯(lián)。Neo4j、RedisGraph(Redis 內(nèi)置的圖形模塊)和 OrientDB 是圖形數(shù)據(jù)庫(kù)的示例。

3、特性

雖然SQL需要 ACID 屬性,但 NoSQL 遵循 CAP理論(盡管一些 NoSQL 數(shù)據(jù)庫(kù)——例如 IBM 的 DB2、MongoDB、AWS 的 DynamoDB 和 Apache 的 CouchDB——也可以集成并遵循 ACID 規(guī)則)。

CAP 定理表明,分布式數(shù)據(jù)系統(tǒng)允許進(jìn)行權(quán)衡,即在任何時(shí)候只能保證以下三個(gè)屬性(形成首字母縮寫詞 CAP)中的兩個(gè):

一致性:每個(gè)請(qǐng)求都會(huì)收到最新的結(jié)果或錯(cuò)誤。MongoDB 是強(qiáng)一致性系統(tǒng)的一個(gè)例子,而 Cassandra 等其他系統(tǒng)則提供最終一致性。

可用性:每個(gè)請(qǐng)求都有一個(gè)非錯(cuò)誤結(jié)果。

分區(qū)容限:節(jié)點(diǎn)之間的任何延遲或丟失都不會(huì)中斷系統(tǒng)運(yùn)行。

4、支持

雖然 NoSQL 很快被采用,但它的用戶社區(qū)較小,因此支持較少。NoSQL 用戶確實(shí)受益于開(kāi)源系統(tǒng),而不是許多專有的 SQL 語(yǔ)言。

5、NoSQL 數(shù)據(jù)庫(kù)示例:雷迪斯、動(dòng)物數(shù)據(jù)庫(kù)、沙發(fā)數(shù)據(jù)庫(kù)、MongoDB

卡桑德拉、彈性搜索、大表、Neo4j、HBase。


以上就是SQL和NoSQL的區(qū)別分享,希望對(duì)大家有所幫助。



/template/Home/Zkeys724/PC/Static