Home >> Blog >> 什麼是 NoSQL,什麼是 NoSQL 資料庫?

什麼是 NoSQL,什麼是 NoSQL 資料庫?

NoSQL 資料庫技術將信息存儲在 JSON 文檔中,而不是關係資料庫使用的列和行。需要明確的是,NoSQL 代表“not only SQL”而不是“no SQL”。這意味著 NoSQL JSON 資料庫可以使用字面上的“無 SQL”來存儲和檢索資料。或者,您可以將 JSON 的靈活性與 SQL 的強大功能結合起來,實現兩全其美。因此,NoSQL 資料庫的構建具有靈活性、可擴展性,並且能夠快速響應現代企業的資料管理需求。下面定義了四種最流行的 NoSQL 資料庫類型:

  • 文檔資料庫主要用於將信息存儲為文檔,包括但不限於 JSON 文檔。例如,這些系統還可用於存儲 XML 文檔。
  • 鍵值對將相關資料分組存儲在集合中,記錄用唯一鍵標識以便於檢索。鍵值存儲具有足夠的結構來反映關係資料庫的價值,同時仍保留 NoSQL 的優勢。
  • 寬列資料庫使用關係資料庫的表格格式,但即使在同一個表中,也允許在每一行中命名和格式化資料的方式存在很大差異。與鍵值存儲一樣,寬列資料庫具有一些基本結構,同時也保留了很大的靈活性
  • 圖資料庫使用圖結構來定義存儲資料點之間的關係。圖資料庫對於識別非結構化和半結構化信息中的模式很有用。

為什麼使用 NoSQL?

客戶體驗已迅速成為最重要的競爭優勢,並將商業世界帶入一個巨大變革的時代。作為這場革命的一部分,企業正在以前所未有的規模進行數字化互動——不僅與他們的客戶,而且與他們的員工、合作夥伴、供應商,甚至他們的產品。這種交互由網際網路和其他 21 世紀的技術提供支持——革命的核心是公司的雲、移動、社交媒體、大資料和物聯網應用程序。

這些應用程序與 ERP、HR 和財務會計等傳統企業應用程序有何不同?當今的 Web、移動和 IoT 應用程序具有以下一個或多個(如果不是全部)特徵。他們需要:

  • 支持大量並髮用戶(數万,也許數百萬)
  • 向全球分佈的用戶群提供高度響應的體驗
  • 隨時可用 - 無需停機
  • 處理半結構化和非結構化資料
  • 通過頻繁更新和新功能快速適應不斷變化的需求

構建和運行這些大規模交互式應用程序產生了一組新的技術要求。新的企業技術架構需要比以往任何時候都更加敏捷,並且需要一種能夠適應前所未有的規模、速度和資料可變性的實時資料管理方法。關係型資料庫無法滿足這些新需求,因此企業紛紛轉向 NoSQL 資料庫技術。

全球 2000 強企業正在迅速採用 NoSQL 資料庫為其任務關鍵型應用程序提供支持:

  • 歐洲第一大零售商Tesco為電子商務、產品目錄和其他應用程序部署 NoSQL
  • 萬豪為其每年預訂 380 億美元的預訂系統部署 NoSQL
  • 國排名第一的報紙出版商Gannett將 NoSQL 用於其專有的內容管理系統 Presto
  • GE為其 Predix 平台部署 NoSQL 以幫助管理工業網際網路

五個趨勢創造了 NoSQL DB 解決的新的技術挑戰

這些公司以及數百家類似的公司正在轉向 NoSQL,因為五個趨勢對大多數關係資料庫來說都太難了。

數字經濟趨勢

1. 更多客戶上線



2. 網際網路連接一切



3. 大資料越來越大



4. 應用程序正在遷移到雲端



5. 世界變得移動化

要求

.擴展以支持數千甚至數百萬用戶
.以一致的高性能滿足用戶體驗要求
.每週 7 天、每天 24 小時保持可用性

• 支持不同資料結構的許多不同事物
• 支持硬體/軟體更新,生成不同資料
• 支持實時資料的連續流

• 存儲客戶生成的半結構化/非結構化資料
• 一起存儲來自不同來源的不同類型的資料
• 存儲數千/百萬客戶/事物生成的資料

• 按需擴展以支持更多客戶,存儲更多資料
• 在全球範圍內運行應用程序——客戶遍布全球
• 最大限度地降低基礎設施成本,加快上市時間

• 創建“離線優先”的應用程序——不需要網路連接
• 將移動資料與雲中的遠程資料庫同步
• 使用單一後端支持多個移動平台

SQL呢?

我們將一些關係資料庫稱為 SQL 資料庫,因為它們依賴 SQL(又名“結構化查詢語言”)來檢索相關信息。SQL 於 1979 年首次推出,現在全球的開發人員和資料分析師都使用 SQL 來查找和報告存儲在 Oracle 等關係系統中的資料。

為什麼關係資料庫不足

關係 DBMS(資料庫管理系統)誕生於大型機和業務應用程序的時代——早在網際網路、雲、大資料、移動和當今的大規模交互企業之前。這些資料庫被設計為在單個服務器上運行——越大越好。增加這些資料庫容量的唯一方法是升級服務器(處理器、內存和存儲)以擴大規模。

NoSQL 資料庫是隨著網際網路的指數級增長和 Web 應用程序的興起而出現的。Google 於 2006 年發布了 Bigtable 研究論文,Amazon 於 2007 年發布了 Dynamo 研究論文。這些資料庫旨在滿足新一代的企業需求:

需要敏捷開發、滿足不斷變化的需求並消除資料轉換。

敏捷開發H2>

為了在當今以體驗為中心的數字經濟中保持競爭力,企業必須進行創新——而且他們必須以前所未有的速度進行創新。由於這項創新以現代 Web、移動和 IoT 應用程序的開發為中心,因此開發人員必須以前所未有的速度交付應用程序和服務。速度和敏捷性都至關重要,因為這些應用程序的發展速度遠遠快於 ERP 等傳統應用程序。關係資料庫是一個主要障礙,因為它們的固定資料模型不能很好地支持敏捷開發。

為不斷變化的需求劃定範圍

敏捷開發的一個核心原則是適應不斷變化的應用程序需求:當需求發生變化時,資料模型也會發生變化。這對於關係資料庫來說是一個問題,因為資料模型是由靜態模式固定和定義的。因此,為了更改資料模型,開發人員必須修改模式,或者更糟的是,向資料庫管理員請求“模式更改”。這會減慢或停止開發,不僅因為它是一個手動的、耗時的過程,還因為它會 影響其他應用程序和服務。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

相比之下,NoSQL 資料庫完全支持敏捷開發,並且沒有靜態定義資料必須如何建模。相反,NoSQL 遵循應用程序和服務,因此開發人員應該如何建模資料。使用 NoSQL,資料模型由應用程序模型定義。應用程序和服務將資料建模為對象。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

消除資料轉換

應用程序和服務將資料建模為對象(例如,員工),將多值資料建模為集合(例如,角色),並將相關資料建模為嵌套對像或集合(例如,經理)。然而,關係資料庫將資料建模為行和列的表——相關資料是不同表中的行,多值資料是同一表中的行。

關係資料庫的問題在於,資料是通過分解或“分解”和重新組裝對象來讀取和寫入的。這就是對象關係的“阻抗失配”。解決方法是通過對象關係映射框架轉換資料,這在最好的情況下是低效的,在最壞的情況下是有問題的。NoSQL 資料庫通常處理呈現的資料。

NoSQL 是如何工作的?

NoSQL 如何比較?讓我們仔細看看。以下 NoSQL 教程說明了用於管理簡歷的應用程序。它作為一個對象(即用戶對象)與簡歷交互,包含一個技能數組,以及一個職位集合。或者,將簡歷寫入關係資料庫需要應用程序“分解”用戶對象。

存儲此簡歷需要應用程序將六行插入三個表中,如圖 3 所示。

而且,讀取此配置文件需要應用程序從三個表中讀取六行,如圖 4 所示。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

什麼是 NoSQL,什麼是 NoSQL 資料庫?

相比之下,在定義為 NoSQL 的面向文檔的資料庫中,JSON 是用於存儲資料的事實上的格式——這很有幫助,它也是為 Web、移動和 IoT 應用程序消費和生成資料的事實上的標準。JSON 不僅消除了對象-關係阻抗不匹配,還消除了 ORM 框架的開銷並簡化了應用程序開發,因為對象的讀取和寫入無需“粉碎”它們(即,單個對象可以作為單個文檔讀取或寫入) ,如圖 5 所示。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

查詢和 SQL 呢?

有些人可能會爭辯說查詢 NoSQL 資料庫更難,但這是一個常見的誤解。面向文檔的 NoSQL 資料庫固有的靈活性使其能夠同等地處理結構化和非結構化資料,並且新工具允許比以往更快的查詢。

Couchbase Server 4.0 引入了 N1QL(讀作“nickel”),這是一種將 SQL 擴展到 JSON 的強大查詢語言,使開發人員能夠同時利用 SQL 的強大功能和 JSON 的靈活性。它不僅支持標準的 SELECT / FROM / WHERE 語句,還支持聚合(GROUP BY)、排序(SORT BY)、連接(LEFT OUTER / INNER),以及查詢嵌套數組和集合。此外,可以使用複合索引、部分索引、覆蓋索引等來提高查詢性能。



SQL

SELECT RTRIM(p.FirstName) + ' ' + LTRIM(p.LastName) AS Name, d.City
FROM AdventureWorks2016.Person.Person AS p
INNER JOIN AdventureWorks2016.HumanResources.Employee e ON p.BusinessEntityID = e.BusinessEntityID
INNER JOIN
(SELECT bea.BusinessEntityID, a.City
FROM AdventureWorks2016.Person.Address AS a
INNER JOIN AdventureWorks2016.Person.BusinessEntityAddress AS bea
ON a.AddressID = bea.AddressID) AS d
ON p.BusinessEntityID = d.BusinessEntityID
ORDER BY p.LastName, p.FirstName;


以任何規模運作

支持 Web、移動和 IoT 應用程序的資料庫必須能夠以任何規模運行。雖然可以擴展像 Oracle 這樣的關係資料庫(例如,使用 Oracle RAC),但這樣做通常很複雜、昂貴且不完全可靠。例如,使用 Oracle 時,使用 RAC 技術進行橫向擴展需要大量組件,並且會產生單點故障,從而危及可用性。相比之下,NoSQL 分佈式資料庫——採用橫向擴展架構設計且無單點故障——提供了引人注目的運營優勢。/p>

大規模性能的彈性

應用程序和服務必須支持數量不斷增加的用戶和資料——數百到數千到數百萬用戶,以及千兆字節到千兆字節的操作資料。同時,他們必須擴展以保持性能,並且必須有效地做到這一點。

資料庫必須能夠擴展讀取、寫入和存儲。

對於僅限於擴展(即,向單個物理服務器添加更多處理器、內存和存儲)的關係資料庫來說,這是一個問題。因此,有效地按需擴展的能力是一個挑戰。它變得越來越昂貴,因為企業必須購買越來越大的服務器來容納更多的用戶和更多的資料。此外,如果必須使資料庫脫機以執行硬體升級,可能會導致停機。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

而,分佈式 NoSQL 資料庫利用商用硬體進行橫向擴展——即,只需添加更多服務器即可添加更多資源。擴展能力使企業能夠通過以下方式更有效地擴展:(a) 部署的硬體不超過滿足當前負載所需的硬體;(b) 利用較便宜的硬體和/或云基礎設施;(c) 按需擴展且無需停機。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

除了能夠有效和高效地擴展之外,分佈式 NoSQL 資料庫還易於安裝、配置和擴展。它們被設計用來分配讀取、寫入和存儲,並且它們被設計成可以在任何規模上運行——包括管理和監控大大小小的集群。

始終在線的全球部署可用性

隨著越來越多的客戶通過網路和移動應用程序在線進行互動,可用性成為一個主要的(如果不是主要的)問題。這些關鍵任務應用程序必須每週 7 天、每天 24 小時可用——沒有例外。對於部署到單個物理服務器或依賴於共享存儲集群的關係資料庫而言,提供 24x7 可用性是一項挑戰。如果部署為單個服務器並且出現故障,或者部署為集群並且共享存儲出現故障,則資料庫將變得不可用。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

與關係技術相比,分佈式 NoSQL 資料庫將資料分區並分發到多個資料庫實例,而無需共享資源。此外,可以將資料複製到一個或多個實例以實現高可用性(集群間複製)。雖然像 Oracle 這樣的關係資料庫需要單獨的複制軟體(例如,Oracle Active Data Guard),但 NoSQL 資料庫不需要——它是內置的並且是自動的。此外,自動故障轉移確保如果一個節點發生故障,資料庫可以通過將請求發送到不同的節點來繼續執行讀取和寫入。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

隨著客戶參與在線移動,在多個國家和/或地區提供服務的需求變得至關重要。雖然將資料庫部署到多個資料中心可以提高可用性並有助於災難恢復,但它還具有提高性能的好處,因為所有讀取和寫入都可以在最近的資料中心上執行,從而減少延遲。

在需要單獨的附加組件會增加複雜性的情況下(例如,Oracle 要求 Oracle GoldenGate 在資料庫之間移動資料)或多個資料中心之間的複制只能用於故障轉移,因為只有一個資料中心,因此很難確保關係資料庫的全局可用性一次處於活動狀態。此外,在資料中心之間進行複制時,基於關係資料庫構建的應用程序可能會遇到性能下降或發現資料中心嚴重不同步的情況。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

分佈式 NoSQL 資料庫包括資料中心之間的內置複製——不需要單獨的軟體。此外,有些還包括單向和雙向複製,可實現對多個資料中心的完全主動-主動部署,從而允許將資料庫部署在多個國家和/或地區,並為本地應用程序及其用戶提供本地資料訪問。這不僅提高了性能,還通過硬體路由器實現了即時故障轉移——應用程序不必等待資料庫發現故障並執行自己的故障轉移。

什麼是 NoSQL,什麼是 NoSQL 資料庫?

結論

那麼什麼是 NoSQL 資料庫,為什麼它們現在很重要?隨著企業轉向數字經濟——由雲、移動、社交媒體和大資料技術支持——開發人員和運營團隊必須更快、更大規模地構建和維護 Web、移動和 IoT 應用程序。靈活、高性能的 NoSQL 越來越成為支持當今 Web、移動和 IoT 應用程序的首選資料庫技術。

數百家全球 2000 強企業以及數以萬計的小型企業和初創公司都採用了 NoSQL。對於許多人來說,NoSQL 的使用始於緩存、概念驗證或小型應用程序,然後擴展到目標任務關鍵型應用程序,現在已成為所有應用程序開發的基礎。

借助 NoSQL,企業能夠更好地進行敏捷開發和任意規模的運營,並提供滿足數字經濟業務需求所需的性能和可用性。

oracle

教程

cloud

rdbms

sharding

rdbms

oci

mongodb

azure