首頁 > 軟體

關係型資料庫和非關係型資料庫概述與優缺點對比

2022-03-04 13:03:09

一、關係型資料庫

1、概念

關係型資料庫:是指採用了關係模型來組織資料的資料庫,是目前各類資料庫中使用最為廣泛的資料庫系統。簡單的說,關係模型指的就是二維表格模型,一個關係型資料庫就是由二維表及其之間的聯絡所組成的一個資料組織。現在使用的主流資料庫都是關係型資料庫,比如SQL Server、Mysql、Oracle、DB2、Sybase等。
關係模型中常用的概念:
關係:可以理解為一張二維表,每個關係都具有一個關係名,就是通常說的表名。
元組:可以理解為二維表中的一行,在資料庫中經常被稱為記錄。
屬性:可以理解為二維表中的一列,在資料庫中經常被稱為欄位。
域:  屬性的取值範圍,也就是資料庫中某一列的取值限制。
關鍵字:一組可以唯一標識元組的屬性,資料庫中常稱為主鍵,由一個或多個列組成。
關係模式:指對關係的描述。其格式為:關係名(屬性1、屬性2......屬性N),在資料庫中稱為表結構。

2、關係型資料庫的特點

關聯式資料庫是支援關係模型的資料庫系統。而關係模型是由二維表來表示實體和實體間聯絡的模型。使用二維表儲存資料,對使用者來說很直觀,更容易理解。使用關聯式資料庫的優勢主要表現在以下幾個特性:
(1)操作方便性。通過開發應用程式和資料庫連線,使用者能方便的對資料庫中資料進行操作,特別對沒有資料庫基礎的人,也可以通過資料庫管理系統,直接在資料庫中操作。
(2)易於維護性。關聯式資料庫在完整性約束中提供了實體完整性、參照完整性和使用者定義的完整性,通過完整性約束可以大大降低資料儲存的冗餘及資料不一致的概率。
(3)存取資料的靈活性。關聯式資料庫中提供了諸如檢視、儲存過程、觸發器、索引等物件,使資料的存取更加靈活。

3、關係型資料庫的瓶頸

(1)對資料庫高並行讀寫的需求
Web2.0網站要根據使用者個性化資訊來實時生成動態頁面和提供動態資訊,無法使用動態頁面靜態化技術,因此資料庫的並行負載非常高,往往要達到每秒上萬次的讀寫請求,此時,伺服器上的磁碟根本無法承受如此之多的讀寫請求。
(2)對海量資料的高效率儲存和存取的需求
對於大型的社群網站,每天使用者產生海量的使用者動態,隨著使用者的不斷增減,一個資料表中的記錄可能有幾億條,對於關係型資料庫來說,在一個有上億條記錄的表裡面進行SQL查詢,效率是及其低下的。
(3)高擴充套件性和可用性
在基於web的結構當中,資料庫是最難進行橫向擴充套件的,當一個應用系統的使用者量和存取量與日俱增的時候,資料庫沒有辦法像web server那樣簡單的通過新增更多的硬體和服務節點來擴充套件效能和負載能力。

4、關係型資料遵循ACID原則

事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性:

1、A (Atomicity) 原子性

原子性很容易理解,也就是說事務裡的所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。比如銀行轉賬,從A賬戶轉100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要麼一起完成,要麼一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。

2、C (Consistency) 一致性

一致性也比較容易理解,也就是說資料庫要一直處於一致的狀態,事務的執行不會改變資料庫原本的一致性約束。例如現有完整性約束a+b=10,如果一個事務改變了a,那麼必須得改變b,使得事務結束後依然滿足a+b=10,否則事務失敗。

3、I (Isolation) 獨立性

所謂的獨立性是指並行的事務之間不會互相影響,如果一個事務要存取的資料正在被另外一個事務修改,只要另外一個事務未提交,它所存取的資料就不受未提交事務的影響。比如現有有個交易是從A賬戶轉100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。

4、D (Durability) 永續性

永續性是指一旦事務提交後,它所做的修改將會永久的儲存在資料庫上,即使出現宕機也不會丟失。

二、NoSQL資料庫

NoSQL是用於指代那些非關係型的、分散式的、且一般不保證遵循ACID原則的非關係型的資料庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。NoSQL用於超大規模資料的儲存。(例如谷歌或Facebook每天為他們的使用者收集萬億位元的資料)。這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件。非關係型資料庫提出了另外一種概念,例如:以鍵值對的方式進行儲存,且結構不固定,每一個元組可以有不一樣的欄位,每個元組可以根據需要增加一些自己的鍵值對,這樣就不會侷限於固定的結構,可以減少一些時間和空間的開銷。使用這種方式,使用者可以根據需要去新增自己需要的欄位。但非關係型資料庫由於很少的約束,他也不能夠提供像SQL所提供的where這種對於欄位屬性值情況的查詢。並且難以體現設計的完整性。它只適合儲存一些較為簡單的資料,對於需要進行較複雜查詢的資料,SQL資料庫顯的更為合適。

1、分散式系統

分散式系統(distributed system)由多臺計算機和通訊的軟體元件通過計算機網路連線(本地網路或廣域網)組成。

分散式系統是建立在網路之上的軟體系統。正是因為軟體的特性,所以分散式系統具有高度的內聚性和透明性。

因此,網路和分散式系統之間的區別更多的在於高層軟體(特別是作業系統),而不是硬體。

分散式系統可以應用在在不同的平臺上如:Pc、工作站、區域網和廣域網上等。

2、分散式計算的優點

可靠性(容錯) :

分散式計算系統中的一個重要的優點是可靠性。一臺伺服器的系統崩潰並不影響到其餘的伺服器。

可延伸性:

在分散式計算系統可以根據需要增加更多的機器。

資源共用:

共用資料是必不可少的應用,如銀行,預訂系統。

靈活性:

由於該系統是非常靈活的,它很容易安裝,實施和偵錯新的服務。

更快的速度:

分散式計算系統可以有多臺計算機的計算能力,使得它比其他系統有更快的處理速度。

開放系統:

由於它是開放的系統,本地或者遠端都可以存取到該服務。

更高的效能:

相較於集中式計算機網路叢集可以提供更高的效能(及更好的價效比)。

3、分散式計算的缺點

故障排除:

故障排除和診斷問題。

軟體:

更少的軟體支援是分散式計算系統的主要缺點。

網路:

網路基礎設施的問題,包括:傳輸問題,高負載,資訊丟失等。

安全性:

開發系統的特性讓分散式計算系統存在著資料的安全性和共用的風險等問題。

4、關係型資料庫和非關係型資料庫的比較

4.1、關係型資料庫

- 高度組織化結構化資料 
- 結構化查詢語言(SQL) (SQL) 
- 資料和關係都儲存在單獨的表中。 
- 資料操縱語言,資料定義語言 
- 嚴格的一致性
- 基礎事務

4.2、NoSQL

- 代表著不僅僅是SQL
- 沒有宣告性查詢語言
- 沒有預定義的模式
-鍵 - 值對儲存,列儲存,檔案儲存,圖形資料庫
- 最終一致性,而非ACID屬性
- 非結構化和不可預知的資料
- CAP定理 
- 高效能,高可用性和可伸縮性

關係型資料庫的最大特點就是事務的一致性:傳統的關係型資料庫讀寫操作都是事務的,具有ACID的特點,這個特性使得關係型資料庫可以用於幾乎所有對一致性有要求的系統中,如典型的銀行系統。
但是,在網頁應用中,尤其是SNS應用中,一致性卻不是顯得那麼重要,使用者A看到的內容和使用者B看到同一使用者C內容更新不一致是可以容忍的,或者說,兩個人看到同一好友的資料更新的時間差那麼幾秒是可以容忍的,因此,關係型資料庫的最大特點在這裡已經無用武之地,起碼不是那麼重要了。
相反地,關係型資料庫為了維護一致性所付出的巨大代價就是其讀寫效能比較差,而像微博、facebook這類SNS的應用,對並行讀寫能力要求極高,關係型資料庫已經無法應付(在讀方面,傳統上為了克服關係型資料庫缺陷,提高效能,都是增加一級memcache來靜態化網頁,而在SNS中,變化太快,memchache已經無能為力了),因此,必須用新的一種資料結構儲存來代替關聯式資料庫。
關聯式資料庫的另一個特點就是其具有固定的表結構,因此,其擴充套件性極差,而在SNS中,系統的升級,功能的增加,往往意味著資料結構巨大變動,這一點關係型資料庫也難以應付,需要新的結構化資料儲存。
於是,非關係型資料庫應運而生,由於不可能用一種資料結構化儲存應付所有的新的需求,因此,非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。
必須強調的是,資料的持久儲存,尤其是海量資料的持久儲存,還是需要使用關係型資料庫的。

5、NoSQL的優點/缺點

優點:

  • - 高可延伸性
  • - 分散式計算
  • - 低成本
  • - 架構的靈活性,半結構化資料
  • - 沒有複雜的關係

缺點:

  • - 沒有標準化
  • - 有限的查詢功能(到目前為止)
  • - 最終一致是不直觀的程式

 到此這篇關於關係型資料庫和非關係型資料庫概述與優缺點對比的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com