什麼是 NoSQL 資料庫?
NoSQL 資料庫是為特定資料模型而建立,並且具有構建新型應用程式的彈性結構描述。NoSQL 資料庫在開發的容易性、功能性和大規模效能方面廣受肯定。本頁提供的資源內容,可協助您更瞭解並開始使用 NoSQL 資料庫。
NoSQL (非關聯式) 資料庫如何運作?
NoSQL 資料庫使用多種資料模型來存取及管理資料。這些類型的資料庫透過放寬傳統關聯式資料庫的一些資料一致性限制,特別針對需要大量資料、低延遲和彈性資料模型的應用程式進行優化。
請參考模塑簡易書籍資料庫結構描述的範例:
- 在關聯式資料庫中,通常會隱藏 (或「正規化」) 書籍記錄,並將記錄存放於個別表格中,同時以主鍵和外鍵限制來定義關係。在此範例中,書籍表格有 ISBN、書名和版本編號欄,作者表格有 AuthorID 和作者名稱欄,最後 Author-ISBN 表格有 AuthorID 和 ISBN 欄。關聯式模型的設計是使資料庫強化資料庫表格間的參考完整性,並經過正規化以減少重複,而且針對儲存加以整體優化。
- 在 NoSQL 資料庫中,書籍資料通常儲存為 JSON 文件。就每一本書,將項目、ISBN、書名、版本編號、作者名稱和 AuthorID 存成單一文件中的屬性。在此模型中,資料針對直覺開發和橫向擴充進行優化。
為何您應該使用 NoSQL 資料庫?
NoSQL 資料庫非常適合行動、Web、遊戲等需要彈性、可擴展性、高效能和高功能資料庫的新型應用程式,以利打造絕佳的使用者體驗。
- 彈性:NoSQL 資料庫整體而言提供促進更快速及更能反覆開發的彈性結構描述。具彈性的資料模型讓 NoSQL 資料庫成為半結構和非結構式資料的理想資料庫。
- 可擴展性:NoSQL 資料庫一般的設計都能透過硬體的分散式叢集來向外擴展,而不必藉由增加昂貴和重量級的伺服器來進行垂直擴展。有些雲端供應商背後將這些操作處理成全受管服務。
- 高效能:NoSQL 資料庫針對特定資料模型加以優化,並且存取比使用關聯式資料庫達到相同功能的更高效能模式。
- 高功能性:NoSQL 資料庫提供專為各別資料模型而建造的高功能 API 和資料。
NoSQL 資料庫的類型

鍵值:鍵值資料庫具備高度可分割性,允許其他類型資料庫無法達到的大規模橫向擴展。遊戲、廣告科技和 IoT 等使用案例特別適合採用鍵值資料模型。Amazon DynamoDB 專門針對任何工作負載規模,保持提供個位數的毫秒延遲。如此一致的效能表現是 Snapchat 限時動態功能 (包括 Snapchat 最大的儲存寫入工作負載) 轉移到 DynamoDB 的一大部分原因。

文件:在應用程式程式碼中,資料通常表示為物件或類似 JSON 的文件,因為它對於開發人員而言是高效且直覺式的資料模型。文件資料庫讓開發人員可以使用他們在應用程式程式碼中使用的相同文件模型格式,更輕鬆地儲存和查詢資料庫中的資料。文件和文件資料庫的靈活、半結構化和分層化特性允許它們隨應用程式的需求而演變。文件模型適用於目錄、使用者設定檔和內容管理系統,其中每個文件都是唯一的並且隨著時間的推移而演變。Amazon DocumentDB (與 MongoDB 相容) 和 MongoDB 為彈性的反覆開發提供強大且直覺式的 API,是廣受歡迎的文件資料庫。

圖形:圖形資料庫的目的在於方便建造與執行作用在高度連結資料集的應用程式。圖形資料庫常見的使用案例包括社群聯網、推薦引擎、詐欺偵測和知識結構圖。Amazon Neptune 是一種全受管圖形資料庫服務。Neptune 同時支援屬性圖模型和資源描述框架 (RDF),提供兩種圖形 API 選擇:TinkerPop 和 RDF/SPARQL。受歡迎的圖形資料庫包括 Neo4j 和 Giraph。

內存:遊戲和廣告科技應用程式有分數排行榜、期間存儲和即時分析等需要微秒回應時間,且流量中隨時可能出現大型峰值的使用案例。 Amazon MemoryDB for Redis 是一種與 Redis 相容的持久性記憶體內資料庫服務,可提供微秒級讀取延遲、不到十毫秒的寫入延遲和多可用區域耐久性。MemoryDB 專為提供超快效能和耐久性而建置,因此,您可以將其用作現代微型服務應用程式的主要資料庫。 Amazon ElastiCache 是一種全受管記憶體內快取服務,與 Redis 和 Memcached 相容,用於服務低延遲、高輸送工作負載。Tinder 等客戶需要對其應用程式即時回應,依賴於記憶體內資料儲存,而不是以磁碟為基礎的資料存放區。 Amazon DynamoDB Accelerator (DAX) 是專門性資料儲存的另一個範例。DAX 使 DynamoDB 能更快讀取數量級。

搜尋:許多應用程式會產出記錄,幫助開發人員解決疑難問題。Amazon OpenSearch Service 專門用於提供將近即時視覺化,並且透過索引、合計與搜尋半結構記錄和指標,提供機器產生性資料的分析。Amazon OpenSearch Service 也是針對全文搜尋使用案例的強大高效能搜尋引擎。Expedia 採用超過 150 個 Amazon OpenSearch Service 網域、30 TB 資料和 300 億份文件進行各種關鍵性任務的使用案例,包括營運監控、疑難排解、分散式應用程式堆疊追蹤和定價優化。
SQL (關聯式) 與NoSQL (非關聯式) 資料庫的比較
幾十年來,用於開發應用程式的主要資料模型,均是諸如 Oracle、DB2、SQL Server、MySQL 和 PostgreSQL 等關聯式資料庫所採用的關聯式資料模型。一直到 2000 年中後期,其他資料模型才開始廣受採納和運用。為了區分和歸類這些新類型的資料庫和資料模組,因此創造了「NoSQL」這個名詞。「NoSQL」這個名詞常常與「非關聯式」互換使用。
雖然 NoSQL 資料類型多樣且功能各異,但您可從以下表格瞭解 SQL 和 NoSQL 資料庫的一些差異性。
關聯式資料庫 | NoSQL 資料庫 | |
---|---|---|
最佳工作負載 |
關聯式資料庫專門用於交易性以及高度一致性的線上交易處理 (OLTP) 應用程式,並且非常適合於線上分析處理 (OLAP) 使用。 | NoSQL 資料庫專門用於包含低延遲應用程式的多樣資料存取模式。NoSQL 搜尋資料庫專門用於進行半結構資料的分析。 |
資料模型 | 關聯式模型將資料標準化,成為由列和欄組成的表格。結構描述嚴格定義表格、列、欄、索引、表格之間的關係,以及其他資料庫元素。此類資料庫強化資料庫表格間的參考完整性。 |
NoSQL 資料庫提供鍵值、文件和圖形等多種資料模型,具有最佳化的效能與規模。 |
ACID 屬性 | 關聯式資料庫則提供單元性、一致性、隔離性和耐用性 (ACID) 的屬性:
|
NoSQL 資料庫通常透過鬆綁部分關聯式資料庫的 ACID 屬性來取捨,以達到能夠橫向擴展的更彈性化資料模型。這使得 NoSQL 資料庫成為橫向擴展超過單執行個體上限的高吞吐量、低延遲使用案例的最佳選擇。 |
效能 | 一般而言,效能取決於磁碟子系統。若要達到頂級效能,通常必須針對查詢、索引及表格結構進行優化。 | 效能通常會受到基礎硬體叢集大小、網路延遲,以及呼叫應用程式的影響。 |
擴展 | 關聯式資料庫通常透過增加硬體運算能力向上擴展,或以新增唯讀工作負載複本的方式向外擴展。 | NoSQL 資料庫通常可分割,因為存取模式可透過使用分散式架構來向外擴展,以近乎無限規模的方式提供一致效能來增加資料吞吐量。 |
API | 存放和擷取資料的請求是透過符合結構式查詢語言 (SQL) 的查詢進行通訊。這些查詢是由關聯式資料庫剖析和執行。 | 以物件為基礎的 API 讓應用程式開發人員可輕鬆存放和擷取資料結構。應用程式可透過分區索引鍵查詢鍵值組、欄集,或包含序列化應用程式物件與屬性的半結構化文件。 |
SQL 與NoSQL 術語的比較
以下表格比較特定 NoSQL 資料庫與 SQL 資料庫所用的術語。
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
表 | 集合 | 表 | 表 | 資料儲存貯體 |
列 | 文件 | 項目 | 列 | 文件 |
欄 | 欄位 | 屬性 | 欄 | 欄位 |
主索引鍵 | 物件 ID | 主索引鍵 |
主索引鍵 | 文件 ID |
索引 | 索引 | 次要索引 | 索引 | 索引 |
檢視 | 檢視 | 全域次要索引 | 具體化檢視 | 檢視 |
巢狀表格或物件 | 內嵌文件 | 對應 | 對應 | 對應 |
陣列 | 陣列 | 清單 | 清單 | 清單 |
清單 |
清單 |
主索引鍵 |
開始使用 DynamoDB
開始使用 DynamoDB 非常簡單。參考我們的 DynamoDB 入門網頁,只需按幾下滑鼠就可以建立您的第一個表。您也可以下載 AWS 白皮書,瞭解從關聯式資料庫管理系統 (RDBMS) 轉移到 DynamoDB 的最佳實務。