什麼是 NoSQL 以及它是否是資料庫領域的下一個大趨勢?
什麼是 NoSQL?
根據官方維基百科的定義:“NoSQL(最初指的是“非 SQL”或“非關係型”)資料庫提供了一種儲存和檢索資料的機制,其建模方式不同於關係型資料庫(RDBMS)中使用的表格關係。它涵蓋了各種不同的資料庫技術,這些技術是為了應對使用者、物件和產品儲存的資料量增加、訪問這些資料的頻率以及效能和處理需求而開發的。通常,NoSQL 資料庫以鍵值對、圖資料庫、面向文件或面向列的結構進行組織。
在幾十年的軟體開發過程中,我們一直在使用 SQL(結構化查詢語言)形式的資料庫,我們將資料儲存在關係表中。然而,近年來隨著網際網路和 Web 2.0 應用的蓬勃發展,資料庫已經增長到數千兆兆位元組。Facebook、Google、Amazon、Watsapp 等應用催生了一個全新的資料庫管理時代,它遵循簡單的設計、速度和比傳統資料庫更快的擴充套件方法。此類資料庫用於大資料、海量即時應用和分析。
例如,假設您有一個部落格應用程式,用於儲存使用者部落格。現在假設您必須在應用程式中新增一些新功能,例如使用者點贊這些部落格文章或對其發表評論或點贊這些評論。使用典型的 RDBMS 實現,這將需要徹底修改您現有的資料庫設計。但是,如果您在這種情況下使用 NoSQL,則可以輕鬆修改您的資料結構以匹配這些敏捷需求。使用 NoSQL,您可以直接開始將此新資料插入到現有結構中,而無需建立任何新的預定義列或預定義結構。
RDBMS 的挑戰
RDBMS 假設資料具有明確定義的結構,並假設資料在很大程度上是統一的。
它需要在構建應用程式之前預先定義應用程式及其屬性(列、型別等)的模式。這與高度動態應用程式的敏捷開發方法不匹配。
隨著資料開始變得越來越大,您必須垂直擴充套件資料庫,即向現有伺服器新增更多容量。
NoSQL 相比 RDBMS 的優勢
無模式 -
NoSQL 資料庫是無模式的,不定義任何嚴格的資料結構。
動態和敏捷 -
NoSQL 資料庫具有良好的動態增長以適應不斷變化的需求的趨勢。它可以處理結構化、半結構化和非結構化資料。
水平擴充套件 -
與垂直擴充套件的 SQL 資料庫相反,NoSQL 透過新增更多伺服器並使用分片和複製的概念進行水平擴充套件。NoSQL 的這種行為適合於 Amazon Web Services (AWS) 等雲計算服務,這些服務允許您處理虛擬伺服器,這些虛擬伺服器可以根據需要進行水平擴充套件。
更好的效能 -
與傳統的 RDBMS 實現相比,所有 NoSQL 資料庫都聲稱可以提供更好、更快的效能。
談到侷限性,由於 NoSQL 是一整套資料庫(而不是單個數據庫),因此侷限性因資料庫而異。其中一些資料庫不支援 ACID 事務,而另一些資料庫可能缺乏可靠性。但它們各自都有自己的優勢,因此非常適合特定的需求。
NoSQL 資料庫的型別
面向文件的資料庫 -
面向文件的資料庫將文件作為一個整體對待,並避免將其拆分為其組成部分的名稱/值對。在集合級別,這允許將各種文件組合到單個集合中。文件資料庫允許根據文件的主識別符號及其屬性對文件進行索引。如今,有不同的開源文件資料庫可用,但最突出的選擇是 MongoDB 和 CouchDB。事實上,MongoDB 已經成為最流行的 NoSQL 資料庫之一。
基於圖的資料庫 -
圖資料庫使用具有節點、邊和屬性的圖結構來表示和儲存資料。根據定義,圖資料庫是任何提供無索引鄰接的儲存系統。這意味著每個元素都包含指向其相鄰元素的直接指標,並且不需要索引查詢。可以儲存任何圖的通用圖資料庫與專門的圖資料庫(如三元組儲存和網路資料庫)不同。索引用於遍歷圖。
基於列的資料庫 -
面向列的儲存允許有效地儲存資料。當某個列的值不存在時,它透過簡單地不儲存該列來避免佔用空間。每個資料單元可以被認為是一組鍵/值對,其中單元本身透過主鍵(通常稱為主鍵)來識別。Bigtable 及其克隆傾向於將此主鍵稱為行鍵。
鍵值資料庫 -
鍵值對的鍵是集合中的唯一值,可以輕鬆查詢以訪問資料。鍵值對的型別多種多樣:有些將資料儲存在記憶體中,而有些則提供將資料持久化到磁碟的功能。Oracle 的 Berkeley DB 是一種簡單但功能強大的鍵值儲存。
流行的 NoSQL 資料庫
讓我們總結一下分別屬於上述類別的幾種流行的 NoSQL 資料庫。
- 面向文件的資料庫 - MongoDB、HBase、Cassandra、Amazon SimpleDB、Hypertable 等。
- 基於圖的資料庫 - Neo4j、OrientDB、Facebook 開放圖、FlockDB 等。
- 基於列的資料庫 - CouchDB、OrientDB 等。
- 鍵值資料庫 - Membase、Redis、MemcacheDB 等。
NoSQL 資料庫。圖片來源:getfilecloud.com
結論
在本文中,我們瞭解了什麼是 NoSQL 資料庫技術以及它與 RDBMS 實現的主要區別。然後,我們探討了各種型別的 NoSQL 資料庫、它們的應用以及每種型別的一些最流行的資料庫。
如今,許多組織正在將其龐大的資料集和高規模應用程式適應此類資料庫。這表明 NoSQL 絕對將成為網路和資料庫技術的下一個大事件,它有可能打破 RDBMS 數年來的傳統。