數(shù)據(jù)模型
關(guān)系模型對(duì)數(shù)據(jù)進(jìn)行了規(guī)范化,使之成為一種表格結(jié)構(gòu)同波,也叫做表鳄梅。這類表由多個(gè)行和列組成。采用一種架構(gòu)來嚴(yán)格定義表未檩、列戴尸、索引、各個(gè)表之間的關(guān)系及其他數(shù)據(jù)庫元素冤狡。
非關(guān)系 (NoSQL) 數(shù)據(jù)庫一般不會(huì)實(shí)施任何架構(gòu)孙蒙。一般使用分區(qū)鍵來檢索值项棠、列集或半結(jié)構(gòu)化 JSON、XML 或其他包含相關(guān)項(xiàng)目屬性的文檔挎峦。
ACID 屬性
傳統(tǒng)關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 支持由 ACID(原子性香追、持續(xù)性、隔離性和一致性)定義的一組屬性坦胶。原子性表示“全有或全無”翅阵,即完全執(zhí)行或完全不執(zhí)行某項(xiàng)事務(wù)。一致性表示事務(wù)提交之后迁央,數(shù)據(jù)必須符合數(shù)據(jù)庫架構(gòu)。隔離性要求并發(fā)事務(wù)應(yīng)分別執(zhí)行滥崩,互不干擾岖圈。持續(xù)性即能夠從意外系統(tǒng)故障或斷電情況中恢復(fù)到上一個(gè)已知狀態(tài)。
為了獲得更為靈活的可水平擴(kuò)展的數(shù)據(jù)模型钙皮,NoSQL 數(shù)據(jù)庫通常會(huì)放棄傳統(tǒng)關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 的部分 ACID 屬性蜂科。憑借這些特性,NoSQL 數(shù)據(jù)庫成了傳統(tǒng) RDBMS 在面臨架構(gòu)方面的挑戰(zhàn)時(shí)的最佳選擇短条。它可用來克服一系列問題导匣,包括性能瓶頸、可擴(kuò)展性茸时、運(yùn)營復(fù)雜性和不斷增加的管理和支持成本贡定。
性能
SQL 數(shù)據(jù)庫性能一般取決于磁盤子系統(tǒng)。要獲得最佳性能可都,就需要優(yōu)化查詢缓待、索引和表結(jié)構(gòu)。
NoSQL 數(shù)據(jù)庫性能通常由底層硬件集群大小渠牲、網(wǎng)絡(luò)延遲以及調(diào)用應(yīng)用程序來決定旋炒。
擴(kuò)展
SQL 數(shù)據(jù)庫進(jìn)行縱向擴(kuò)展最簡(jiǎn)單的方式是利用運(yùn)行更快的硬件。? 要獲得跨分布式系統(tǒng)的關(guān)系表签杈,就需要追加更多投資瘫镇。
NoSQL 數(shù)據(jù)庫旨在利用低成本硬件的分布式集群進(jìn)行橫向擴(kuò)展,從而在不增加延遲的前提下提高吞吐量答姥。
API
SQL 數(shù)據(jù)庫對(duì)存儲(chǔ)和檢索數(shù)據(jù)的請(qǐng)求由符合結(jié)構(gòu)化查詢語言 (SQL) 的查詢來傳達(dá)铣除。
這些查詢由關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 來解析和執(zhí)行。借助基于對(duì)象的 API踢涌,應(yīng)用開發(fā)人員可以輕松存儲(chǔ)和檢索內(nèi)存數(shù)據(jù)結(jié)構(gòu)通孽。通過分區(qū)鍵,應(yīng)用可以查找鍵值對(duì)睁壁、列集或包含序列化應(yīng)用對(duì)象和屬性的半結(jié)構(gòu)化文檔背苦。
工具
SQL 數(shù)據(jù)庫一般會(huì)提供一組豐富的工具互捌,用于簡(jiǎn)化數(shù)據(jù)庫驅(qū)動(dòng)型應(yīng)用程序的開發(fā)流程。
而 NoSQL 數(shù)據(jù)庫一般會(huì)提供多種工具來管理集群和擴(kuò)展行剂。應(yīng)用程序是底層數(shù)據(jù)的主要接口秕噪。