NoSQL筆記——簡介

目錄

一.NoSQL的誕生

二.分佈式數據管理

三.ACID/BASE

四.NoSQL數據庫的分類

 

一.NoSQL的誕生

(1)什麼是數據庫?

數據庫(Database)是按照一定的數據模型來組織、存儲和管理數據的倉庫。

(2)什麼是數據模型

把現實世界中的人、物、活動、概念等用【數據模型】來抽象、表示 成計算機能識別和處理的數字。 數據模型是DB系統的核心和基礎。

(3)傳統數據庫數據模型的類型

層次型、網狀型和關係型

發展歷程:

(4)什麼是關係數據模型?

關係模型有嚴格的數學基礎,抽象級別比較高,而且簡單清晰,便於 理解。很快工業界就參與進來研發關係數據庫系統以及SQL。 代表產品有Oracle、IBM公司的DB2、微軟公司的SQLServer 以及開 源的MySQL。

(5)關係型數據庫的特點(優點)?

  1. 容易理解:用二維表表示
  2. 使用方便:通用的SQL語言。
  3. 易於維護:豐富的完整性約束大大減低了數據冗餘和數據不一 致的可能性。

(6)在大數據時代關係型數據庫的不足

在大數據時代中,數據量大,價值密度低,需要便宜的設備承載。數據量達到了PB級別。

需要數據庫擁有,處理速度快,需要高併發支持及快速擴容能力。

1.無法適應多變的數據結構

現代網絡中存在大量的半結構化、非結構化數據,針對結構化數據而設計的關係 型數據庫系統來說,對這些不斷變化的數據結構,很難進行高效的處理。

2.高併發讀寫的瓶頸

當數據量達到一定規模時由於關係型數據庫的系統邏輯非常複雜,使得在併發 處理時非常容易發生死鎖,導致其讀寫速度下滑嚴重。

3.可擴展性的限制

在現代互聯網環境下,應用系統可能在短時間內出現業務量和業務類型的快速變 化,而這些變化要求支撐數據庫在底層硬件和數據庫設計中提供極強的擴展性。由 於關係型數據庫存在類似的join操作,使得數據庫在擴展方面很困難

(7)大數據背景下對數據庫的要求?

  • 放鬆數據一致性的要求
  • 改變固定的表結構
  • 去除事務、關聯等複雜操作

(8)NoSQL誕生

NoSQL即是Not only SQL,我們將他們稱爲分佈式數據庫。

(9)分佈式數據庫必須具有的特徵

高可擴展性:分佈式數據庫必須具有高可擴展性,能夠動態地增添存儲節點以實現存儲容量的線性擴展。

高併發性:分佈式數據庫必須及時響應大規模用戶的讀/寫請求,能對海量數據進行隨機讀、寫。

高可用性:分佈式數據庫必須提供容錯機制,能夠實現對數據的冗餘備份,保證數據和服務的高度可靠性。

 

二.分佈式數據管理

(1)什麼是數據庫系統?

數據庫系統 = 數據庫管理系統 + 數據庫

(2)什麼是數據庫管理系統?(DBMS)

數據庫管理系統(Database Management System)是一種操縱和管理數據庫的大型軟件,用於建立、使用和維護數據庫,簡稱DBMS。主要任務就是對外提供數據,對內要管理數據。

(3)數據處理方式:集中式VS分佈式:

集中式數據庫是指數據庫中的數據集中存儲在一臺計算機上,數據的處理也集中 在一臺機器上完成。

分佈式數據庫是指利用高速計算機網絡將物理上分散的多個數據存儲單元連接起來組成一個邏輯上統一的數據庫。

(4)CAP理論

一個分佈式系統最多隻能同時滿足一致性 (Consistency)、可用性(Availability) 和分區容錯性(Partition tolerance)這三 項中的兩項。

1.一致性(consistency)(強一致性):

它是指任何一個讀操作總是能夠讀到之前完成的寫操作的結果。所有節點在同一時間具有相同的數據。

2.可用性(Availability)(高可用性): 

每個請求都能在確定時間內返回一個響應,無論請求是成功或失敗。

3.分區容忍性(Partition Tolerance) :

它是指當出現網絡分區情況時,即系統中的一部分節點無法和其他節點進行通信,分離的系統也能正常運行。也就是說,系統中任意信息的丟失或失敗不會影響系統的繼續運作。

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

1. CA:也就是強調一致性(C)和可用性(A),放棄分區容忍性(P),最簡單的做法是把所有與事務相關的內容都放到同一臺機器上。

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

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

(6)CAP問題之間的取捨:

在一個允許網絡發生故障的系統中,分佈式系統該選擇一致性C還是可用性A(P必須有!)

三.ACID/BASE

(1)ACID是什麼?

數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、 一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。、

1.原子性: 一個事務的所有系列操作步驟被看成是一個動作,所有的步驟要麼全部完成要麼都不會完成。

2.一致性: 事務執行前後,數據庫的狀態都滿足所有的完整性約束。

3.隔離性: 併發執行的事務是隔離的,保證多個事務互不影響,隔離能夠確保併發執行的事務能夠順序一個接一個執行,通過隔離,一個未完成事務不會影響另外一個未完成事務。

4.持久性: 一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的,不會因爲和其他操作衝突而取消這個事務。

(2)BASE原則是什麼? (理論上)

BASE原則 = 基本可用性(Basically Available) + 軟狀態(Softstate) + 最終一致性(Eventuallyconsistent)

1.基本可用性:分佈式系統在出現故障的時候,允許損失部分可用性,即保證核心功能或者當前最重要功能可用,但是其他功能會被削弱。

2.軟狀態:允許系統數據存在中間狀態,但不會影響到系統的整體可用性,即允許系統在不同節點的數據副本之間進行數據同步時存在延時。

3.最終一致性:要求系統數據副本最終能夠一致,而不需要實時保證數據副本一致。最終一致性是弱一致性的一種特殊情況。

(3)爲什麼會有BASE原則:

CAP理論定義了分佈式存儲的根本問題,但並沒有指出一致性和可用性之間到底應該如何權衡。於是出現了BASE思想,給出了權衡A與C的一種可行方案。

ACID和BASE代表了在一致性 -可用性兩點之間進行選擇的設計哲學。

ACID強調一致性被關係數據庫使用,BASE強調可用性被大多數NoSQL使用。

 

四.NoSQL數據庫的分類

(1)NoSQL的分類:

 1.鍵值數據庫:

2.列族數據庫: 

 

 3.文檔數據庫: 

4.圖形數據庫:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章