SQL與NOSQL的比較

數(shù)據(jù)模型

關(guān)系模型對數(shù)據(jù)進行了規(guī)范化,使之成為一種表格結(jié)構(gòu),也叫做表。這類表由多個行和列組成。采用一種架構(gòu)來嚴(yán)格定義表、列、索引、各個表之間的關(guān)系及其他數(shù)據(jù)庫元素。

非關(guān)系 (NoSQL) 數(shù)據(jù)庫一般不會實施任何架構(gòu)。一般使用分區(qū)鍵來檢索值、列集或半結(jié)構(gòu)化 JSON、XML 或其他包含相關(guān)項目屬性的文檔。

ACID 屬性

傳統(tǒng)關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 支持由 ACID(原子性、持續(xù)性、隔離性和一致性)定義的一組屬性。原子性表示“全有或全無”,即完全執(zhí)行或完全不執(zhí)行某項事務(wù)。一致性表示事務(wù)提交之后,數(shù)據(jù)必須符合數(shù)據(jù)庫架構(gòu)。隔離性要求并發(fā)事務(wù)應(yīng)分別執(zhí)行,互不干擾。持續(xù)性即能夠從意外系統(tǒng)故障或斷電情況中恢復(fù)到上一個已知狀態(tài)。

為了獲得更為靈活的可水平擴展的數(shù)據(jù)模型,NoSQL 數(shù)據(jù)庫通常會放棄傳統(tǒng)關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 的部分 ACID 屬性。憑借這些特性,NoSQL 數(shù)據(jù)庫成了傳統(tǒng) RDBMS 在面臨架構(gòu)方面的挑戰(zhàn)時的最佳選擇。它可用來克服一系列問題,包括性能瓶頸、可擴展性、運營復(fù)雜性和不斷增加的管理和支持成本。

性能

SQL 數(shù)據(jù)庫性能一般取決于磁盤子系統(tǒng)。要獲得最佳性能,就需要優(yōu)化查詢、索引和表結(jié)構(gòu)。

NoSQL 數(shù)據(jù)庫性能通常由底層硬件集群大小、網(wǎng)絡(luò)延遲以及調(diào)用應(yīng)用程序來決定。

擴展

SQL 數(shù)據(jù)庫進行縱向擴展最簡單的方式是利用運行更快的硬件。? 要獲得跨分布式系統(tǒng)的關(guān)系表,就需要追加更多投資。

NoSQL 數(shù)據(jù)庫旨在利用低成本硬件的分布式集群進行橫向擴展,從而在不增加延遲的前提下提高吞吐量。

API

SQL 數(shù)據(jù)庫對存儲和檢索數(shù)據(jù)的請求由符合結(jié)構(gòu)化查詢語言 (SQL) 的查詢來傳達。

這些查詢由關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 來解析和執(zhí)行。借助基于對象的 API,應(yīng)用開發(fā)人員可以輕松存儲和檢索內(nèi)存數(shù)據(jù)結(jié)構(gòu)。通過分區(qū)鍵,應(yīng)用可以查找鍵值對、列集或包含序列化應(yīng)用對象和屬性的半結(jié)構(gòu)化文檔。

工具

SQL 數(shù)據(jù)庫一般會提供一組豐富的工具,用于簡化數(shù)據(jù)庫驅(qū)動型應(yīng)用程序的開發(fā)流程。

而 NoSQL 數(shù)據(jù)庫一般會提供多種工具來管理集群和擴展。應(yīng)用程序是底層數(shù)據(jù)的主要接口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容