SQL是一種已有數(shù)十年歷史的訪問關(guān)系數(shù)據(jù)庫的方法,大多數(shù)使用數(shù)據(jù)庫的人都熟悉它。隨著非結(jié)構(gòu)化數(shù)據(jù)、存儲(chǔ)和處理能力的數(shù)量以及分析類型多年來的變化,我們已經(jīng)看到不同的數(shù)據(jù)庫技術(shù)變得更適合新類型的用例。這些數(shù)據(jù)庫通常稱為 NoSQL。那么SQL和NoSQL有何區(qū)別呢?下面小編給大家詳細(xì)分析一下:
一、什么是 SQL 數(shù)據(jù)庫?
SQL 代表“結(jié)構(gòu)化查詢語言”,是自 1970 年代以來廣泛用于管理關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS)中的數(shù)據(jù)的編程語言。早些年,當(dāng)存儲(chǔ)成本很高時(shí),SQL 數(shù)據(jù)庫專注于減少數(shù)據(jù)重復(fù)。
快進(jìn)到今天,SQL 仍然廣泛用于查詢關(guān)系數(shù)據(jù)庫,其中數(shù)據(jù)存儲(chǔ)在以各種方式鏈接的行和表中。一個(gè)表記錄可以鏈接到另一個(gè)表記錄或許多其他表記錄,或者許多表記錄可能與另一個(gè)表中的許多記錄相關(guān)。這些提供快速數(shù)據(jù)存儲(chǔ)和恢復(fù)的關(guān)系數(shù)據(jù)庫可以處理大量數(shù)據(jù)和復(fù)雜的 SQL 查詢。
SQL 的工作原理:SQL 數(shù)據(jù)庫在處理結(jié)構(gòu)化數(shù)據(jù)或在其變量和實(shí)體之間具有關(guān)系的數(shù)據(jù)方面很有價(jià)值。
1、可擴(kuò)展性
通常,SQL 數(shù)據(jù)庫可以垂直擴(kuò)展,這意味著您可以通過遷移到更大的服務(wù)器來增加服務(wù)器的負(fù)載,從而增加更多的 CPU、RAM 或SSD功能。雖然最常使用垂直可擴(kuò)展性,但 SQL 數(shù)據(jù)庫也可以通過分片或分區(qū)邏輯進(jìn)行水平擴(kuò)展,盡管這并沒有得到很好的支持。
2、結(jié)構(gòu)
SQL 數(shù)據(jù)庫模式以關(guān)系、表格的方式組織數(shù)據(jù),使用具有列或?qū)傩缘谋砗陀涗浶?。因?yàn)镾QL使用這種嚴(yán)格預(yù)定義的模式,所以它需要在開始使用SQL數(shù)據(jù)庫之前組織和結(jié)構(gòu)化數(shù)據(jù)。
3、特性
使用SQL的 RDBMS 必須表現(xiàn)出四個(gè)屬性,即縮寫詞 ACID。這些可確保成功處理事務(wù)并確保 SQL 數(shù)據(jù)庫具有高度的可靠性。
原子性:所有事務(wù)必須完全成功或失敗,不能部分完成,即使在系統(tǒng)故障的情況下也是如此。
一致性:數(shù)據(jù)庫必須遵循在每一步驗(yàn)證和防止損壞的規(guī)則。
隔離:并發(fā)事務(wù)不能相互影響。
持久性:事務(wù)是最終的,即使系統(tǒng)故障也不能“回滾”一個(gè)完整的事務(wù)。
4、支持
由于 SQL 數(shù)據(jù)庫現(xiàn)在歷史悠久,它們擁有龐大的社區(qū),并且在線上有許多穩(wěn)定代碼庫的示例。有許多專家可以支持 SQL 和編程關(guān)系數(shù)據(jù)。
5、SQL數(shù)據(jù)庫示例:數(shù)據(jù)庫2;MySQL;PostgreSQL;裕嘉數(shù)據(jù)庫
蟑螂數(shù)據(jù)庫;甲骨文數(shù)據(jù)庫;微軟 SQL 服務(wù)器;Azure SQL數(shù)據(jù)庫。
二、什么是 NoSQL 數(shù)據(jù)庫?
NoSQL是一種非關(guān)系型數(shù)據(jù)庫,這意味著它允許與 SQL 數(shù)據(jù)庫不同的結(jié)構(gòu)(不是行和列),并且可以更靈活地使用最適合數(shù)據(jù)的格式?!癗oSQL”一詞直到 2000 年代初才被創(chuàng)造出來。這并不意味著系統(tǒng)不使用 SQL,因?yàn)?NoSQL 數(shù)據(jù)庫有時(shí)確實(shí)支持某些 SQL 命令。更準(zhǔn)確地說,“NoSQL”有時(shí)被定義為“不僅僅是 SQL”。
NoSQL的工作原理
與SQL不同,NoSQL系統(tǒng)允許您在數(shù)據(jù)庫中使用不同的數(shù)據(jù)結(jié)構(gòu)。因?yàn)樗鼈冊(cè)试S非結(jié)構(gòu)化數(shù)據(jù)的動(dòng)態(tài)模式,所以無需預(yù)先計(jì)劃和預(yù)先組織數(shù)據(jù),并且更容易進(jìn)行修改。NoSQL數(shù)據(jù)庫允許您添加新的屬性和字段,以及跨數(shù)據(jù)庫使用不同的語法。
1、可擴(kuò)展性
NoSQL 數(shù)據(jù)庫可以更好地橫向擴(kuò)展,這意味著可以根據(jù)需要添加額外的服務(wù)器或節(jié)點(diǎn)來增加負(fù)載。
2、結(jié)構(gòu)
NoSQL 數(shù)據(jù)庫不是關(guān)系型數(shù)據(jù)庫,因此它們不僅僅將數(shù)據(jù)存儲(chǔ)在行和表中。相反,它們通常屬于以下四種結(jié)構(gòu)之一:
面向列的,其中數(shù)據(jù)存儲(chǔ)在幾乎無限數(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ù)庫中的文檔可以具有不同的數(shù)據(jù)類型。
圖形數(shù)據(jù)庫,它表示圖形上的數(shù)據(jù),顯示不同的數(shù)據(jù)集如何相互關(guān)聯(lián)。Neo4j、RedisGraph(Redis 內(nèi)置的圖形模塊)和 OrientDB 是圖形數(shù)據(jù)庫的示例。
3、特性
雖然SQL需要 ACID 屬性,但 NoSQL 遵循 CAP理論(盡管一些 NoSQL 數(shù)據(jù)庫——例如 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í)受益于開源系統(tǒng),而不是許多專有的 SQL 語言。
5、NoSQL 數(shù)據(jù)庫示例:雷迪斯、動(dòng)物數(shù)據(jù)庫、沙發(fā)數(shù)據(jù)庫、MongoDB
卡桑德拉、彈性搜索、大表、Neo4j、HBase。
以上就是SQL和NoSQL的區(qū)別分享,希望對(duì)大家有所幫助。
Copyright ? 2013-2020. All Rights Reserved. 恒訊科技 深圳市恒訊科技有限公司 粵ICP備20052954號(hào) IDC證:B1-20230800.移動(dòng)站