什麽是 NoSQL?

NoSQL 的定義

NoSQL 是指以與關聯式表格不同的格式儲存資料的非關聯式資料庫。不過,您可以使用 idiomatic language API、宣告式結構化查詢語言,以及依範例查詢語言來查詢 NoSQL 資料庫,這就是為什麼它們也稱為「不僅 SQL」資料庫。

NoSQL 資料庫的用途為何?

NoSQL 資料庫也廣泛用於即時 Web 應用程式和巨量資料,因為主要優點是高擴充性及高可用性。

NoSQL 資料庫也是開發人員的優先選擇,因為它們自然上會透過快速因應不斷變化的需求,將自己帶到靈活的開發典範。NoSQL 資料庫允許以更直觀、更易於理解的方式儲存資料,或是更靠近應用程式使用資料的方式儲存資料,而使用 NoSQL 樣式的 API 儲存或擷取需要較少的轉換。此外,NoSQL 資料庫還能充分運用雲端技術,提供零停機時間。

SQL 與 NoSQL 的比較

SQL 資料庫為關聯式,而 NoSQL 資料庫為非關聯式資料庫。關聯式資料庫管理系統 (RDBMS) 是結構化查詢語言 (SQL) 的基礎,可讓使用者存取和操控高結構化表格中的資料。這是適用於資料庫系統的基礎模型,例如 MS SQL Server、IBM DB2、Oracle 和 MySQL。但使用 NoSQL 資料庫時,資料存取語法可以與資料庫不同。

關聯式資料庫與 NoSQL 資料庫的比較

若要了解 NoSQL 資料庫,請務必了解 RDBMS 與非關聯式資料庫之間的差異。

RDBMS 中的資料會儲存在稱為表格的資料庫物件中。表格是相關資料項目的集合,由資料欄與資料列組成。這些資料庫需要事先定義綱要,亦即必須先確定所有資料欄及其相關的資料類型,才能讓應用程式將資料寫入資料庫。它們也會透過使用關鍵碼來儲存連結多個表格的資訊,從而跨多個表格建立關係。在最簡單的案例中,會使用索引鍵來擷取特定資料列,以便檢查或修改該資料列。

相反地,在 NoSQL 資料庫中,您不需事先定義綱要即可儲存資料,這意味著您能夠快速移動及重複,並且可隨意定義資料模型。這適用於特定業務需求,不論是以圖形為基礎的、資料欄導向、文件導向還是索引鍵值存放區。

關聯式資料庫一直到最近才被廣泛使用的模型。它們在許多企業仍極為無所不在。然而,現今被存取的資料種類、速度與數量,有時需要不同的資料庫來補充關聯式資料庫。這讓 NoSQL 資料庫的部分區域 (亦稱為「非關聯式資料庫」) 採用這項服務。由於非關聯式資料庫能夠水平快速橫向擴充,因此可處理高流量,這也使得這些資料庫高度適應。

選擇 NoSQL 資料庫的時機?

有了需要快速創新的企業和組織,可以保持靈活性,隨時隨地持續運作,絕對是遊戲的名稱。NoSQL 資料庫提供彈性的綱要,也支援各種資料模型,適用於建置需要大量資料量和低延遲或回應時間的應用程式,例如線上遊戲和電子商務 Web 應用程式。

什麼時候不選擇 NoSQL 資料庫?

NoSQL 資料庫通常依賴去標準化的資料,支援使用較少表格 (或容器) 且其資料關係不是使用參照來塑造模型,而是內嵌記錄 (或文件) 的應用程式類型。許多典型的財務、會計和企業資源規劃後台業務應用程式,都依靠高度標準化的資料,防止資料異常和資料複製。這些通常是不適用於 NoSQL 資料庫的應用程式類型。

NoSQL 資料庫的另一個差別在於查詢複雜性。NoSQL 資料庫對於單一表格的查詢效果非常理想。然而,隨著查詢的複雜度增加,關聯式資料庫是更好的選擇。NoSQL 資料庫通常在 WHERE 子句中不提供複雜的結合、子查詢以及巢狀查詢。

有時,關聯式資料庫與非關聯式資料庫並不需要有選擇。在許多情況下,公司選擇了提供融合模型的資料庫,因此能夠在其中採用關聯式與非關聯式資料模型的組合。此混合式策略可在處理不同類型的資料時提供更大的彈性,同時還能確保讀取和寫入的一致性,而不會降低效能。

此混合式策略可在處理不同類型的資料時提供更大的彈性,同時還能確保讀取和寫入的一致性,而不會降低效能。

NoSQL 資料庫與其他類型資料庫之間的其中一個主要差異因子是 NoSQL 資料庫通常使用非結構化儲存體。在過去 20 年開發的 NoSQL 資料庫是專為快速、簡單的查詢、巨量資料和經常進行應用程式變更所設計。此外,這些資料庫也讓開發人員使用程式設計變得更簡單。

另一個差別是 NoSQL 資料庫依賴稱為分區的處理作業來水平擴充,這表示可以新增更多機器來處理多個伺服器的資料。在其他 SQL 資料庫中發現的垂直調整需要將更多電源與記憶體新增至現有機器,因為需要更多儲存,所以無法持續發展。

利用 NoSQL 資料庫進行水平調整的本質,意味著他們可以處理大量的資料,即使資料不斷成長,資料也更有效率。有助於思考垂直比例,例如將新樓層加入您的房子,而水平縮放則類似於在原始樓門旁建另一棟房子。

NoSQL 資料庫的優點

過去 20 年,數位互動與資料消耗的前所未有的速度與規模,企業必須採用更現代化的流暢方式,了解其儲存資料和存取資料的方式。全球各地的使用者都要求提供不中斷的內容和功能串流,而這些使用者並不再需要快速因應資料庫。因此,有下列幾個重要原因:開發人員選擇 NoSQL/ 非關聯式資料庫:

  • 靈活性

    使用 SQL 資料庫時,資料會儲存在更為嚴格預先定義的結構中。但使用 NoSQL 時,資料可以更自由格式儲存,而不會以嚴謹的架構儲存。此設計可實現創新,並快速開發應用程式。開發人員可以專注於建立系統,以便在不擔心綱要問題的情況下,為客戶提供更優質的服務。NoSQL 資料庫可以輕鬆處理任何資料格式,例如結構化、半結構化及單一資料存放區中的非結構化資料。
  • 擴展性

    不必增加更多伺服器來擴大規模,NoSQL 資料庫可以使用商品硬體橫向擴充。這能夠支援增加的流量,以滿足零停機的需求。透過橫向擴充,NoSQL 資料庫會變得更大且更強大,這就是為什麼他們已經成為發展資料集的偏好選項。
  • 高效能

    當資料量或流量增加時,NoSQL 資料庫的橫向擴充架構尤其重要。如下圖所示,此架構可確保可快速且可預測的單一數毫秒回應時間。NoSQL 資料庫也能夠擷取資料並以快速可靠的方式提供,這也是為什麼每天都會使用 NoSQL 資料庫在收集數 TB 資料的應用程式中,同時需要提供高度互動式的使用者體驗。下圖中顯示 3-4ms 範圍內的每秒 300 次讀取速率 (藍色線),延遲 95 次,內送速率為每秒 150 次,延遲為 4-5ms 範圍內的每秒 95 次內送速率。

    nosql 資料庫

  • 可用性

    NoSQL 資料庫會自動在多個伺服器、資料中心或雲端資源之間複製資料。如此一來,不論使用者的所在位置,都能將延遲降到最低。此功能也可用來降低資料庫管理的負擔,以騰出時間專注於其他優先順序。
  • 高功能性

    這使得 NoSQL 成為巨量資料、即時 Web 應用程式、客戶 360、線上購物、線上博弈、物聯網、社交網路及線上廣告應用的理想選擇。這使得 NoSQL 成為巨量資料、即時 Web 應用程式、客戶 360、線上購物、線上博弈、物聯網、社交網路及線上廣告應用的理想選擇。

NoSQL 資料庫類型

NoSQL 資料庫有四種主要類型:

  • 索引鍵值

    這是最具彈性的 NoSQL 資料庫類型,因為應用程式可完全控制值欄位中儲存的項目,而沒有任何限制。
  • 文件

    也稱為文件存放區或文件導向資料庫,這些資料庫可用來儲存、擷取和管理半結構化資料。不需要指定文件將包含的欄位。
  • 圖表

    此資料庫會將資料組織為節點與關係,以顯示節點之間的連線。這支援更豐富且更完整的資料呈現方式。圖表資料庫會套用至社群網路、保留系統以及詐騙偵測。
  • 寬欄

    這些資料庫會以表格、資料列以及資料欄的形式儲存及管理資料。它們大致上部署在需要資料欄格式才能擷取無綱要資料的應用程式。

試用 Oracle NoSQL Database

Oracle NoSQL Database Cloud Service 可讓開發人員使用文件、分欄式及索引鍵值資料庫模型輕鬆建立應用程式,運用資料複寫以實現高可用性,提供可預測的數毫秒回應時間。此服務提供 ACID 交易、無伺服器規模調整、全方位安全性,以及低廉的依使用量價格。

Oracle NoSQL Database Cloud 服務現在是 Oracle Cloud Free Tier 的一部分,其中包括了免費的定期促銷試用方案,讓您探索各式各樣的雲端服務,並且提供一組永遠免費服務。