nosql資料庫的特點是什麼

2022-11-28 22:02:37

nosql特點:1、靈活的可延伸性;nosql去掉了關聯式資料庫的關係型特性,資料之間無關係,很簡單就能夠擴充套件。2、靈活的資料模型;NoSQL採用鍵/值、列族等非關係模型,允許在一個資料元素裡儲存不同型別的資料。3、NoSQL可以憑藉自身良好的橫向擴充套件能力,充分自由利用雲端計算基礎設施,很好地融人到雲端計算環境中。4、nosql有著非常高的讀寫效能,特別是在巨量資料量之下。5、高可用。

千萬級資料並行如何處理?進入學習

本教學操作環境:windows7系統、Dell G3電腦。

NoSQL簡介

NoSQL是一種不同於關聯式資料庫的資料庫管理系統設計方式,是對非關係型資料庫的統稱,它所採用的資料模型並非傳統關聯式資料庫的關係模型,而是類似鍵/值、列族、檔案等非關係模型。NoSQL資料庫沒有固定的表結構,通常也不存在連線操作,也沒有嚴格遵守ACID約束。因此,與關聯式資料庫相比,NoSQL具有靈活的水平可延伸性,可以支援海量資料儲存。

什麼是ACID?

  • 事務的原子性(Atomicity)是指一個事務要麼全部執行,要麼不執行,也就是說一個事務不可能只執行了一半就停止了。比如你從取款機取錢,這個事務可以分成兩個步驟:1劃卡,2出錢。不可能劃了卡,而錢卻沒出來。這兩步必須同時完成,要麼就不完成。
  • 事務的一致性(Consistency)是指事務的執行並不改變資料庫中資料的一致性。例如,完整性約束了a+b=10,一個事務改變了a,那麼b也應該隨之改變。
  • 獨立性(Isolation):事務的獨立性也有稱作隔離性,是指兩個以上的事務不會出現交錯執行的狀態。因為這樣可能會導致資料不一致。
  • 永續性(Durability):事務的永續性是指事務執行成功以後,該事務對資料庫所作的更改便是持久的儲存在資料庫之中,不會無緣無故的回滾

NoSQL資料庫的特點

1)靈活的可延伸性

傳統的關係型資料庫由於自身設計機理的原因,通常很難實現「橫向擴充套件」,在面對資料庫負載大規模增加時,往往需要通過升級硬體來實現「縱向擴充套件」。NoSQL資料庫在設計之初就是為了滿足「橫向擴充套件」的需求,因此天生具備良好的水平擴充套件能力。

2)靈活的資料模型

關聯式資料庫具有規範的定義,遵守各種嚴格的約束條件。這種做法雖然保證了業務系統對資料一致性的需求,但是過於死板的資料模型,也意味著無法滿足各種新興的業務需求。相反,NoSQL資料庫採用鍵/值、列族等非關係模型,允許在一個資料元素裡儲存不同型別的資料。

3)與雲端計算緊密融合

雲端計算具有很好的水平擴充套件能力,可以根據資源使用情況進行自由伸縮,各種資源可以動態加人或退出,NoSQL資料庫可以憑藉自身良好的橫向擴充套件能力,充分自由利用雲端計算基礎設施,很好地融人到雲端計算環境中,構建基於NoSQL的雲資料庫服務。

(4)巨量資料量,高效能

nosql資料庫都有著非常高的讀寫效能,特別是在巨量資料量之下,一樣也表現的非常的優秀,這主要得益於它的無關係性,資料庫的結構簡單。

通常的nosql使用Query Cache。

nosql的Cache是記錄級的,是一種細粒度的Cache,所以說,nosql從這個方面來說的話,效能就要高了很多了。

(5)高可用

高可用也是nosql很明顯的一個特點,nosql在不太影響效能的情況之下,就能夠非常方便的實現高可用的架構,典型的例如:Cassandra、HBase模型,通過模型的話也可以實現高可用。

NoSQL興起的原因

1關聯式資料庫已經無法滿足Web2.0的需求主要表現在以下幾個方面:

  • 1)無法滿足海量資料的管理需求

  • 對於上述網站而言,很快就可以產生超過10億條的記錄,對於關聯式資料庫來說,在一張10億條記錄的表裡進行SQL查詢,效率極其低下。

  • 2)無法滿足資料高並行的需求

  • 3)無法滿足高可延伸性和高可用性的需求

2、關聯式資料庫的關鍵特性在Web 2.0時代成為「雞肋」

關聯式資料庫的關鍵特性包括完善的事務機制和高效的查詢機制。但是,關聯式資料庫引以為傲的兩個關鍵特性,到了Web2.0時代卻成了雞肋,主要表現在以下幾個方面:

(1) Web 2.0網站系統通常不要求嚴格的資料庫事務

對於許多Web 2.0網站而言,資料庫事務已經不是那麼重要。資料庫事務通常有一套複雜的實現機制來保證資料庫一致性,需要大量系統開銷,對於包含大量頻繁實時讀寫請求的Web 2.0網站而言,實現事務的代價是難以承受的。

(2)Web 2.0並不要求嚴格的讀寫實時性

對於關聯式資料庫而言,一旦有一條資料記錄成功插人資料庫中,就可以立即被查詢。

對於Web 2.0而言,沒有這種實時讀寫需求。

(3)Web 2.0通常不包含大量複雜的SQL查詢

複雜的SQL查詢通常包含多表連線操作。但是,Web 2.0網站在設計時就已經儘量減少甚至避免這類操作,通常只採用單表的主鍵查詢,因此關聯式資料庫的查詢優化機制在Web 2.0中也就難以有所作為。

NoSQL與關聯式資料庫的比較

RDBMS:關聯式資料庫

1.png

2.png

3.png

NoSQL與關聯式資料庫比較 小結:

1)關聯式資料庫

優勢:以完善的關係代數理論作為基礎,有嚴格的標準,支援事務ACID四性,藉助索引機制可以實現高效的查詢,技術成熟,有專業公司的技術支援

劣勢:可延伸性較差,無法較好支援海量資料儲存,資料模型過於死板、無法較好支援Web2.0應用,事務機制影響了系統的整體效能等

2NoSQL資料庫

優勢:可以支援超大規模資料儲存,靈活的資料模型可以很好地支援Web2.0應用,具有強大的橫向擴充套件能力等

劣勢:缺乏數學理論基礎,複雜查詢效能不高,大都不能實現事務強一致性,很難實現資料完整性,技術尚不成熟,缺乏專業團隊的技術支援,維護較困難等

(3)關聯式資料庫和NoSQL資料庫各有優缺點,彼此無法取代

關聯式資料庫應用場景:電信、銀行等領域的關鍵業務系統,需要保證強事務一致性

NoSQL資料庫應用場景:網際網路企業、傳統企業的非關鍵業務(比如資料分析)

採用混合架構

  • 案例:亞馬遜公司就使用不同型別的資料庫來支撐它的電子商務應用
  • 對於「購物籃」這種臨時性資料,採用鍵值儲存會更加高效
  • 當前的產品和訂單資訊則適合存放在關聯式資料庫中

NoSQL的四大型別

NoSQL資料庫雖然數量眾多,但是,歸結起來,典型的NoSQL資料庫通常包括鍵值資料庫列族資料庫檔案資料庫圖形資料庫

1.鍵值資料庫

鍵值資料庫(Key-Value Database) 的表中有一個特定的Key和一個指標指向特定的Value。Key可以用來定位Value,即儲存和檢索具體的Value。Value對資料庫而言是透明不可見的,不能對Value進行索引和查詢,只能通過Key進行查詢。Value可以用來儲存任意型別的資料,包括整型、字元型、陣列、物件等。

應用場景:一個面向對談的應用程式(如 Web 應用程式)在使用者登入時啟動對談,並保持活動狀態直到使用者登出或對談超時。在此期間,應用程式將所有與對談相關的資料儲存在主記憶體或資料庫中。對談資料可能包括使用者資料資訊、訊息、個性化資料和主題、建議、有針對性的促銷和折扣。每個使用者對談具有唯一的識別符號。除了主鍵之外,任何其他鍵都無法查詢對談資料,因此快速鍵值儲存更適合於對談資料。一般來說,鍵值資料庫所提供的每頁開銷可能比關聯式資料庫要小。

4.png

2.列族資料庫

5.png

3.檔案資料庫

6.png

4.圖形資料庫

7.png

5.不同型別資料庫比較分析

8.png

  • MySQL:產生年代較早,而且隨著LAMP大潮得以成熟。儘管其沒有什麼大的改進,但是新興的網際網路使用的最多的資料庫
  • MongoDB:是個新生事物,提供更靈活的資料模型、非同步提交、地理位置索引等五花十色的功能
  • HBase:是個「仗勢欺人」的大象兵。依仗著Hadoop的生態環境,可以有很好的擴充套件性。但是就像象兵一樣,使用者需要養一頭大象(Hadoop),才能驅使他
  • Redis:是鍵值儲存的代表,功能最簡單。提供亂資料儲存。就像一根棒子一樣,沒有多餘的構造。但是也正是因此,它的伸縮性特別好。就像悟空手裡的金箍棒,大可捅破天,小能成縮成針

NoSQL的三大基石

所謂的CAP指的是:

  • CConsistency):一致性,是指任何一個讀操作總是能夠讀到之前完成的寫操作的結果,也就是在分散式環境中,多點的資料是一致的,或者說,所有節點在同一時間具有相同的資料
  • A:Availability):可用性,是指快速獲取資料,可以在確定的時間內返回操作結果,保證每個請求不管成功或者失敗都有響應
  • PTolerance of Network Partition):分割區容忍性,是指當出現網路分割區的情況時(即系統中的一部分節點無法和其他節點進行通訊),分離的系統也能夠正常執行,也就是說,系統中任意資訊的丟失或失敗不會影響系統的繼續運作

CAP理論告訴我們,一個分散式系統不可能同時滿足一致性、可用性和分割區容忍性這三個需求,最多隻能同時滿足其中兩個,正所謂「魚和熊掌不可兼得」。

9.png

當處理CAP的問題時,可以有幾個明顯的選擇:

  • CA:也就是強調一致性(C)和可用性(A),放棄分割區容忍性(P),最簡單的做法是把所有與事務相關的內容都放到同一臺機器上。很顯然,這種做法會嚴重影響系統的可延伸性。傳統的關聯式資料庫(MySQLSQL ServerPostgreSQL),都採用了這種設計原則,因此,擴充套件性都比較差

  • CP:也就是強調一致性(C)和分割區容忍性(P),放棄可用性(A),當出現網路分割區的情況時,受影響的服務需要等待資料一致,因此在等待期間就無法對外提供服務

  • AP:也就是強調可用性(A)和分割區容忍性(P),放棄一致性(C),允許系統返回不一致的資料

BASE

前面說到ACID ,現在淺談一下BASEBasically Availble, Soft-state, Eventual consistency)

ACID

BASE

原子性(Atomicity)

基本可用(Basically Available)

一致性(Consistency)

軟狀態/柔性事務(Soft state)

隔離性(Isolation)

最終一致性 (Eventual consistency)

永續性 (Durable)


BASE的基本含義是基本可用(Basically Availble)、軟狀態(Soft-state)和最終一致性(Eventual consistency

基本可用

基本可用,是指一個分散式系統的一部分發生問題變得不可用時,其他部分仍然可以正常使用,也就是允許分割區失敗的情形出現

軟狀態

「軟狀態(soft-state)」是與「硬狀態(hard-state)」相對應的一種提法。資料庫儲存的資料是「硬狀態」時,可以保證資料一致性,即保證資料一直是正確的。「軟狀態」是指狀態可以有一段時間不同步,具有一定的滯後性

最終一致性

一致性的型別包括強一致性和弱一致性,二者的主要區別在於高並行的資料存取操作下,後續操作是否能夠獲取最新的資料。對於強一致性而言,當執行完一次更新操作後,後續的其他讀操作就可以保證讀到更新後的最新資料;反之,如果不能保證後續存取讀到的都是更新後的最新資料,那麼就是弱一致性。而最終一致性只不過是弱一致性的一種特例,允許後續的存取操作可以暫時讀不到更新後的資料,但是經過一段時間之後,必須最終讀到更新後的資料。

更多程式設計相關知識,請存取:!!

以上就是nosql資料庫的特點是什麼的詳細內容,更多請關注TW511.COM其它相關文章!