數據模型
關系模型對數據進行了規范化,使之成為一種表格結構,也叫做表。這類表由多個行和列組成。采用一種架構來嚴格定義表、列、索引、各個表之間的關系及其他數據庫元素。
非關系 (NoSQL) 數據庫一般不會實施任何架構。一般使用分區鍵來檢索值、列集或半結構化 JSON、XML 或其他包含相關項目屬性的文檔。
ACID 屬性
傳統關系數據庫管理系統 (RDBMS) 支持由 ACID(原子性、持續性、隔離性和一致性)定義的一組屬性。原子性表示“全有或全無”,即完全執行或完全不執行某項事務。一致性表示事務提交之后,數據必須符合數據庫架構。隔離性要求并發事務應分別執行,互不干擾。持續性即能夠從意外系統故障或斷電情況中恢復到上一個已知狀態。
為了獲得更為靈活的可水平擴展的數據模型,NoSQL 數據庫通常會放棄傳統關系數據庫管理系統 (RDBMS) 的部分 ACID 屬性。憑借這些特性,NoSQL 數據庫成了傳統 RDBMS 在面臨架構方面的挑戰時的最佳選擇。它可用來克服一系列問題,包括性能瓶頸、可擴展性、運營復雜性和不斷增加的管理和支持成本。
性能
SQL 數據庫性能一般取決于磁盤子系統。要獲得最佳性能,就需要優化查詢、索引和表結構。
NoSQL 數據庫性能通常由底層硬件集群大小、網絡延遲以及調用應用程序來決定。
擴展
SQL 數據庫進行縱向擴展最簡單的方式是利用運行更快的硬件。? 要獲得跨分布式系統的關系表,就需要追加更多投資。
NoSQL 數據庫旨在利用低成本硬件的分布式集群進行橫向擴展,從而在不增加延遲的前提下提高吞吐量。
API
SQL 數據庫對存儲和檢索數據的請求由符合結構化查詢語言 (SQL) 的查詢來傳達。
這些查詢由關系數據庫管理系統 (RDBMS) 來解析和執行。借助基于對象的 API,應用開發人員可以輕松存儲和檢索內存數據結構。通過分區鍵,應用可以查找鍵值對、列集或包含序列化應用對象和屬性的半結構化文檔。
工具
SQL 數據庫一般會提供一組豐富的工具,用于簡化數據庫驅動型應用程序的開發流程。
而 NoSQL 數據庫一般會提供多種工具來管理集群和擴展。應用程序是底層數據的主要接口。