NoSQL 這個詞指的是高效能的非關聯式資料庫。NoSQL 資料庫使用多種資料模型,包含文件、圖形、鍵值和欄位。NoSQL 資料庫具有易於開發、可擴展的效能、高可用性及恢復能力等特點。以下幾種資源可協助您開始使用 NoSQL 資料庫。
| 關聯式資料庫 | NoSQL 資料庫 | |
| 資料模型 | 關聯式模型將資料標準化為稱作表格的表格式結構,它是由列與欄所組成,且會有一個結構描述嚴格定義表格、欄、索引、表格之間的關係,以及其他資料庫元素。 | 非關聯式 (NoSQL) 資料庫通常不會強制執行結構描述,而會使用分區索引鍵來擷取值、欄集,或半結構化的 JSON、XML 或其他包含相關項目屬性的文件。 |
| ACID 屬性 | 傳統關聯式資料庫管理系統 (RDBMS) 支援一組以縮寫 ACID 定義的屬性:不可部分完成性 (Atomicity)、一致性 (Consistency)、隔離性 (Isolation),以及耐久性 (Durability)。不可部分完成性的意思是「全有或全無」:交易只有完整執行或完全不執行兩種可能。一致性指的是一旦進行交易,資料就必須符合資料庫結構描述。隔離性要求並行的交易必須分開執行。耐久性是指從意外的系統故障或停電狀況還原成上個已知狀態的能力。 | NoSQL 資料庫通常會犧牲一些關聯式資料庫管理系統 (RDBMS) 的 ACID 屬性,以換取更靈活的水平擴展資料模型。這些特點使 NoSQL 資料庫較傳統 RDBMS 更能克服架構上的挑戰,以解決效能瓶頸、可擴展性、操作複雜性,及與日俱增的行政與支援成本等挑戰。 |
| 效能 | 一般而言,效能取決於磁碟子系統。若要達到頂級效能,就必須針對查詢、索引及表格結構進行優化。 | 效能通常會受到基礎硬體叢集大小、網路延遲,以及呼叫應用程式的影響。 |
| 擴展 | 使用越快的硬體就越容易進行擴展。如果要擴展分散式系統,則需要額外投資關聯式表格。 | 其設計旨在使用低成本硬體的分散式叢集進行擴展,在不增加延遲的情況下增加輸送量。 |
| API | 存放和擷取資料的請求是透過符合結構式查詢語言 (SQL) 的查詢進行通訊。關聯式資料庫管理系統 (RDBMS) 會剖析並執行這些查詢。 | 以物件為基礎的 API 讓應用程式開發人員可輕鬆存放和擷取記憶體內的資料結構。應用程式可透過分區索引鍵查詢鍵值組、欄集,或包含序列化應用程式物件與屬性的半結構化文件。 |
| 工具 | SQL 資料庫通常會提供一組豐富的工具,以簡化資料庫驅動型應用程式的開發流程。 | NoSQL 資料庫通常會提供用來管理叢集與擴展的工具。應用程式是基礎資料的主要界面。 |
| SQL |
MongoDB | DynamoDB | Cassandra | Couchbase |
| 表 | 集合 | 表 | 表 | 資料儲存貯體 |
| 列 | 文件 |
項目 | 列 | 文件 |
| 欄 |
欄位 | 屬性 | 欄 | 欄位 |
| 主索引鍵 |
物件 ID |
主索引鍵 | 主索引鍵 | 文件 ID |
| 索引 | 索引 | 次要索引 | 索引 |
索引 |
| 檢視 | 檢視 | 全域次要索引 | 具體化檢視 | 檢視 |
| 巢狀表格或物件 |
內嵌文件 | 對應 | 對應 | 對應 |
| 陣列 |
陣列 | 清單 | 清單 | 清單 |

