什麼是 NoSQL?

具備彈性資料模型的高效能非關聯式資料庫

什麼是 NoSQL 資料庫?

NoSQL 資料庫是為特定資料模型而建立,並且具有構建新型應用程式的彈性結構描述。NoSQL 資料庫在開發的容易性、功能性和大規模效能方面廣受肯定。此類資料庫運用各種資料模型,包括文件、圖形、鍵值、內存和搜尋等。本頁提供的資源內容,可協助您更瞭解並開始使用 NoSQL 資料庫。

幾十年來,用於開發應用程式的主要資料模型,均是諸如 Oracle、DB2、SQL Server、MySQL 和 PostgreSQL 等關聯式資料庫所採用的關聯式資料模型。 一直到 2000 年中後期,其他資料模型才開始廣受採納和運用。 為了區分和歸類這些新類型的資料庫和資料模組,因此創造了「NoSQL」這個名詞。「NoSQL」這個名詞常常與「非關聯式」互換使用。


AWS 專門打造的非關聯式資料庫最新消息

NoSQL (非關聯式) 資料庫如何運作?

NoSQL 資料庫採用各種資料模型 (例如:文件、圖形、鍵值、內存和搜尋等) 來存取和管理資料。這些類型的資料庫透過放寬傳統關聯式資料庫的一些資料一致性限制,特別針對需要大量資料、低延遲和彈性資料模型的應用程式進行優化。

請參考模塑簡易書籍資料庫結構描述的範例:

  • 在關聯式資料庫中,通常會隱藏 (或「正規化」) 書籍記錄,並將記錄存放於個別表格中,同時以主鍵和外鍵限制來定義關係。 在此範例中,書籍表格有 ISBN書名版本編號欄,作者表格有 AuthorID作者名稱欄,最後 Author-ISBN 表格有 AuthorID ISBN 欄。關聯式模型的設計是使資料庫強化資料庫表格間的參考完整性,並經過正規化以減少重複,而且針對儲存加以整體優化。
  • 在 NoSQL 資料庫中,書籍資料通常儲存為 JSON 文件。就每一本書,將項目、ISBN書名版本編號作者名稱AuthorID 存成單一文件中的屬性。在此模型中,資料針對直覺開發和橫向擴充進行優化。

為何您應該使用 NoSQL 資料庫?

NoSQL 資料庫非常適合行動、Web、遊戲等需要彈性、可擴展性、高效能和高功能資料庫的新型應用程式,以利打造絕佳的使用者體驗。

  • 彈性:NoSQL 資料庫整體而言提供促進更快速及更能反覆開發的彈性結構描述。具彈性的資料模型讓 NoSQL 資料庫成為半結構和非結構式資料的理想資料庫。
  • 可擴展性:NoSQL 資料庫一般的設計都能透過硬體的分散式叢集來向外擴展,而不必藉由增加昂貴和重量級的伺服器來進行垂直擴展。有些雲端供應商背後將這些操作處理成全受管服務。
  • 高效能:NoSQL 資料庫針對特定資料模型 (例如文件、鍵值和圖形) 加以優化,並且存取比使用關聯式資料庫達到相同功能的更高效能模式。
  • 高功能性:NoSQL 資料庫提供專為各別資料模型而建造的高功能 API 和資料。

NoSQL 資料庫的類型

nosql_keyvalue_g

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

nosql_document_g

文件:有些開發人員不是以去正規化的列和欄來思考其資料模型。通常在應用程式層級,資料是以 JSON 文件來表示,因為開發人員以文件形式來思考資料模式更為直覺。文件資料庫的普遍性一直在成長,因為開發人員可使用和其應用程式碼相同的文件模型格式,將資料存留於資料庫中。 DynamoDB 和 MongoDB 為彈性靈活開發提供強大且直覺式的 API,是廣受歡迎的文件資料庫。

nosql_graph_g

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

nosql_inmemory_g

內存:遊戲和廣告科技應用程式有分數排行榜、期間存儲和即時分析等需要微秒回應時間,且流量中隨時可能出現大型峰值的使用案例。Amazon ElastiCache 提供 Memcached 和 Redis,服務無法透過磁碟資料儲存的低延遲、高吞吐量工作負載 (例如麥當勞)。Amazon DynamoDB Accelerator (DAX) 是專門性資料儲存的另一個例子。DAX 使 DynamoDB 能更快讀取數量級。

nosql_search_g

搜尋:許多應用程式會產出記錄,幫助開發人員解決疑難問題。Amazon Elasticsearch Service (Amazon ES) 專門用於提供將近即時視覺化,並且透過索引、合計與搜尋半結構記錄和指標,提供機器產生性資料的分析。Amazon ES 也是針對全文搜尋使用案例的強大高效能搜尋引擎。Expedia 採用超過 150 個 Amazon ES 網域、30 TB 資料和 300 億份文件進行各種關鍵性任務的使用案例,包括營運監控、疑難排解、分散式應用程式堆疊追蹤和定價優化。

SQL (關聯式) 比較 NoSQL (非關聯式) 資料庫

雖然 NoSQL 資料類型多樣且功能各異,但您可從以下表格瞭解 SQL 和 NoSQL 資料庫的一些差異性。

  關聯式資料庫 NoSQL 資料庫

最佳工作負載

關聯式資料庫專門用於交易性以及高度一致性的線上交易處理 (OLTP) 應用程式,並且非常適合於線上分析處理 (OLAP) 使用。 NoSQL 鍵值、文件、圖形和內存資料庫專門用於針對多樣資料存取模式 (包含低延遲應用程式) 的 OLTP。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 的最佳實務。

什麼是 Amazon DynamoDB?