NoSQL 是「not only SQL」的簡稱,指的是使用非表格格式儲存資料的非關聯式資料庫,而不使用以規則為基礎的關聯式表格 (如關聯式資料庫)。NoSQL 資料庫採用彈性的結構定義模型,可支援多種非結構化資料,例如文件、鍵/值、寬欄和圖形。
機構之所以選擇 NoSQL 資料庫,是因為其靈活性、高效能、水平擴充性和易於開發。
瞭解 Google Cloud 的 NoSQL 資料庫 Bigtable、Memorystore 和 Firestore 能如何協助您強化應用程式並提供優質客戶體驗,而無需擔心擴充性、穩定性,或是資料經常變動的問題。
NoSQL 資料庫主要分為五種:
文件資料庫又稱為文件導向資料庫或文件存放區,用於儲存及查詢半結構化資料。資料會儲存在類似 JSON 的文件中,類似開發人員在應用程式程式碼中使用的資料物件,因此您不必參照主要結構定義,即可輕鬆建立及更新應用程式。文件資料庫最常用於網誌平台、電子商務、即時分析和內容管理系統。
鍵/值資料庫 (又稱為鍵/值儲存庫) 是最簡單的 NoSQL 資料庫類型。資料儲存在「鍵/值」結構中,其中不重複的索引鍵會與值 (如字串、數字、布林值、複雜物件等) 配對。您可以使用該鍵儲存或擷取其相關聯的值。鍵/值存放區在網頁應用程式中最常用於使用者偏好設定、購物車以及使用者設定檔。
資料欄導向資料庫又稱寬欄儲存庫,可在資料列中儲存及讀取資料,且以一組資料欄的形式加以組織。雖然與關聯式資料庫的表格格式類似,但寬欄儲存庫中的資料欄名稱和格式在單一表格中的列與列之間可能有所不同。這類資料庫最適合用於分析用途,例如可能需要查詢資料庫中的特定資料欄,並快速匯總特定資料欄的值。寬欄儲存庫最常用於目錄、詐欺偵測和推薦引擎。
圖形資料庫會將資料整理成圖表中的節點,著重於資料元素之間的關係。節點之間的連線 (邊緣) 會以最高等級元素儲存,能夠以更豐富的形式呈現資料關係,同時提供更簡單的儲存和瀏覽方式。圖形資料庫最常用於會對應關係的系統,包括社群媒體平台、預訂系統、詐欺偵測系統和物流應用程式。
記憶體內資料庫會將資料儲存在記憶體中,以便為即時應用程式提供超低延遲的優勢。Redis 和 Valkey 都是記憶體內 NoSQL 資料庫的例子。記憶體內資料庫最常用於快取、訊息傳遞、串流和即時分析。
NoSQL 功能皆是所選資料庫的專屬功能。然而,它們通常都具備以下幾個相似的普遍特質:
如果應用程式需具備可靠性、高可用性,也需要執行大規模作業,且經常變更資料,非關聯式資料庫是非常適合的選項。
富有彈性的資料模型和結構定義
NoSQL 資料庫可儲存多種類型的資料,並提供彈性的結構定義,非常適合用於半結構化與非結構化資料。您可以輕鬆根據新型資料進行調整,並發展結構定義以滿足任何不斷變化的資料需求。
靈活開發
NoSQL 具備靈活性,能與靈活的應用程式開發相輔相成。NoSQL 資料庫能以原生格式儲存多種類型的資料,並讓資料模型可即時定義及調整,讓開發人員加快執行速度、減少花在資料轉換上的時間,並加快疊代速度。
擴充性
與關聯式資料庫不同,NoSQL 資料庫能隨著資料和流量增長輕鬆提高容量,在多數情況下無需停機。雲端式資料庫提供自動調度資源功能和彈性的計費模式,能讓您更輕鬆依需求調度資源。
大量資料儲存空間
NoSQL 是專門用來處理複雜的大型資料集,可供機構用於大數據、即時分析和 IoT 用途。
高可用性
NoSQL 資料架構採分散式設計,不會出現單點故障。此外,也提供簡便的複製功能,因此能更有效地抵禦意外的服務中斷情形。
加快查詢速度
不像關聯資料庫會經過正規化以減少資料重複,NoSQL 針對快速查詢進行最佳化。NoSQL 通常不需要複雜的彙整作業,代表資料庫查詢可以更快傳回結果。
雖然 NoSQL 資料庫近年來廣受歡迎,但相較於關聯資料庫,NoSQL 資料庫仍有一些缺點。這些技術仍相當新,可能缺乏關聯式資料庫的成熟度。整體而言,如果出現沒有遭遇過的問題,NoSQL 的專業開發人員較少,能使用的工具與產品也較少,且支援也較少。
此外,NoSQL 沒有像 SQL 這樣的通用語言,每個資料庫可能都有自己用來查詢及管理資料的語言。這些語言通常很類似,但並未與 SQL 標準完全相容。
在許多情況下,NoSQL 資料庫缺乏 SQL 資料庫視為標準的資料完整性保護措施以及高度資料一致性。但仍有部分資料庫 (例如 Firestore 和 MongoDB Atlas) 支援 ACID 交易。
NoSQL 資料庫通常不適合用於執行複雜查詢和彙整的應用程式。管理多個節點的索引和查詢作業不僅速度緩慢,而且可能無法傳回一致的結果。
不過,些微延遲在大多數 NoSQL 使用情境下都不成問題,因此最終一致性模型就已足夠。就許多應用程式而言,高可用性和速度遠遠超過維持高度全球一致性的需求。
那麼,為什麼機構要為某些應用程式採用非關聯 NoSQL 資料庫,卻為其他應用程式沿用關聯 SQL 資料庫?一般來說,何謂合適的資料庫是取決於用途。以下說明使用 SQL 與 NoSQL 的時機。
SQL 資料庫擅長管理結構化關聯資料和複雜的查詢。SQL 資料庫符合 ACID 標準,因此適合用於交易資訊。
SQL 用途:
NoSQL 資料庫非常適合用於需要大量使用者散布全球才能提供高度個人化體驗的用途。這些互動式應用程式最適合與 NoSQL 資料庫的靈活性搭配使用。
此外,NoSQL 資料庫會優先考量高可用性、提供穩定一致的效能、服務不需停機就能快速水平擴展,並能處理大量不同類型的資料。
這些 NoSQL 資料庫特色使非關聯式資料庫適合需要大規模、可靠性和高可用性的應用程式。
最常見的 NoSQL 用途包括: