欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫概述與優(yōu)缺點(diǎn)對比

 更新時(shí)間:2022年03月04日 10:11:51   作者:.NET開發(fā)菜鳥  
這篇文章介紹了關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫概述與優(yōu)缺點(diǎn)對比,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、關(guān)系型數(shù)據(jù)庫

1、概念

關(guān)系型數(shù)據(jù)庫:是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫,是目前各類數(shù)據(jù)庫中使用最為廣泛的數(shù)據(jù)庫系統(tǒng)。簡單的說,關(guān)系模型指的就是二維表格模型,一個(gè)關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織?,F(xiàn)在使用的主流數(shù)據(jù)庫都是關(guān)系型數(shù)據(jù)庫,比如SQL Server、Mysql、Oracle、DB2、Sybase等。
關(guān)系模型中常用的概念:
關(guān)系:可以理解為一張二維表,每個(gè)關(guān)系都具有一個(gè)關(guān)系名,就是通常說的表名。
元組:可以理解為二維表中的一行,在數(shù)據(jù)庫中經(jīng)常被稱為記錄。
屬性:可以理解為二維表中的一列,在數(shù)據(jù)庫中經(jīng)常被稱為字段。
域:  屬性的取值范圍,也就是數(shù)據(jù)庫中某一列的取值限制。
關(guān)鍵字:一組可以唯一標(biāo)識元組的屬性,數(shù)據(jù)庫中常稱為主鍵,由一個(gè)或多個(gè)列組成。
關(guān)系模式:指對關(guān)系的描述。其格式為:關(guān)系名(屬性1、屬性2......屬性N),在數(shù)據(jù)庫中稱為表結(jié)構(gòu)。

2、關(guān)系型數(shù)據(jù)庫的特點(diǎn)

關(guān)系數(shù)據(jù)庫是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。而關(guān)系模型是由二維表來表示實(shí)體和實(shí)體間聯(lián)系的模型。使用二維表存儲數(shù)據(jù),對使用者來說很直觀,更容易理解。使用關(guān)系數(shù)據(jù)庫的優(yōu)勢主要表現(xiàn)在以下幾個(gè)特性:
(1)操作方便性。通過開發(fā)應(yīng)用程序和數(shù)據(jù)庫連接,用戶能方便的對數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行操作,特別對沒有數(shù)據(jù)庫基礎(chǔ)的人,也可以通過數(shù)據(jù)庫管理系統(tǒng),直接在數(shù)據(jù)庫中操作。
(2)易于維護(hù)性。關(guān)系數(shù)據(jù)庫在完整性約束中提供了實(shí)體完整性、參照完整性和用戶定義的完整性,通過完整性約束可以大大降低數(shù)據(jù)存儲的冗余及數(shù)據(jù)不一致的概率。
(3)訪問數(shù)據(jù)的靈活性。關(guān)系數(shù)據(jù)庫中提供了諸如視圖、存儲過程、觸發(fā)器、索引等對象,使數(shù)據(jù)的訪問更加靈活。

3、關(guān)系型數(shù)據(jù)庫的瓶頸

(1)對數(shù)據(jù)庫高并發(fā)讀寫的需求
Web2.0網(wǎng)站要根據(jù)用戶個(gè)性化信息來實(shí)時(shí)生成動(dòng)態(tài)頁面和提供動(dòng)態(tài)信息,無法使用動(dòng)態(tài)頁面靜態(tài)化技術(shù),因此數(shù)據(jù)庫的并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬次的讀寫請求,此時(shí),服務(wù)器上的磁盤根本無法承受如此之多的讀寫請求。
(2)對海量數(shù)據(jù)的高效率存儲和訪問的需求
對于大型的社交網(wǎng)站,每天用戶產(chǎn)生海量的用戶動(dòng)態(tài),隨著用戶的不斷增減,一個(gè)數(shù)據(jù)表中的記錄可能有幾億條,對于關(guān)系型數(shù)據(jù)庫來說,在一個(gè)有上億條記錄的表里面進(jìn)行SQL查詢,效率是及其低下的。
(3)高擴(kuò)展性和可用性
在基于web的結(jié)構(gòu)當(dāng)中,數(shù)據(jù)庫是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時(shí)候,數(shù)據(jù)庫沒有辦法像web server那樣簡單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力。

4、關(guān)系型數(shù)據(jù)遵循ACID原則

事務(wù)在英文中是transaction,和現(xiàn)實(shí)世界中的交易很類似,它有如下四個(gè)特性:

1、A (Atomicity) 原子性

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

2、C (Consistency) 一致性

一致性也比較容易理解,也就是說數(shù)據(jù)庫要一直處于一致的狀態(tài),事務(wù)的運(yùn)行不會改變數(shù)據(jù)庫原本的一致性約束。例如現(xiàn)有完整性約束a+b=10,如果一個(gè)事務(wù)改變了a,那么必須得改變b,使得事務(wù)結(jié)束后依然滿足a+b=10,否則事務(wù)失敗。

3、I (Isolation) 獨(dú)立性

所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會互相影響,如果一個(gè)事務(wù)要訪問的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改,只要另外一個(gè)事務(wù)未提交,它所訪問的數(shù)據(jù)就不受未提交事務(wù)的影響。比如現(xiàn)有有個(gè)交易是從A賬戶轉(zhuǎn)100元至B賬戶,在這個(gè)交易還未完成的情況下,如果此時(shí)B查詢自己的賬戶,是看不到新增加的100元的。

4、D (Durability) 持久性

持久性是指一旦事務(wù)提交后,它所做的修改將會永久的保存在數(shù)據(jù)庫上,即使出現(xiàn)宕機(jī)也不會丟失。

二、NoSQL數(shù)據(jù)庫

NoSQL是用于指代那些非關(guān)系型的、分布式的、且一般不保證遵循ACID原則的非關(guān)系型的數(shù)據(jù)庫。NoSQL有時(shí)也稱作Not Only SQL的縮寫,是對不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)的統(tǒng)稱。NoSQL用于超大規(guī)模數(shù)據(jù)的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數(shù)據(jù))。這些類型的數(shù)據(jù)存儲不需要固定的模式,無需多余操作就可以橫向擴(kuò)展。非關(guān)系型數(shù)據(jù)庫提出了另外一種概念,例如:以鍵值對的方式進(jìn)行存儲,且結(jié)構(gòu)不固定,每一個(gè)元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。使用這種方式,用戶可以根據(jù)需要去添加自己需要的字段。但非關(guān)系型數(shù)據(jù)庫由于很少的約束,他也不能夠提供像SQL所提供的where這種對于字段屬性值情況的查詢。并且難以體現(xiàn)設(shè)計(jì)的完整性。它只適合存儲一些較為簡單的數(shù)據(jù),對于需要進(jìn)行較復(fù)雜查詢的數(shù)據(jù),SQL數(shù)據(jù)庫顯的更為合適。

1、分布式系統(tǒng)

分布式系統(tǒng)(distributed system)由多臺計(jì)算機(jī)和通信的軟件組件通過計(jì)算機(jī)網(wǎng)絡(luò)連接(本地網(wǎng)絡(luò)或廣域網(wǎng))組成。

分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)。正是因?yàn)檐浖奶匦裕苑植际较到y(tǒng)具有高度的內(nèi)聚性和透明性。

因此,網(wǎng)絡(luò)和分布式系統(tǒng)之間的區(qū)別更多的在于高層軟件(特別是操作系統(tǒng)),而不是硬件。

分布式系統(tǒng)可以應(yīng)用在在不同的平臺上如:Pc、工作站、局域網(wǎng)和廣域網(wǎng)上等。

2、分布式計(jì)算的優(yōu)點(diǎn)

可靠性(容錯(cuò)) :

分布式計(jì)算系統(tǒng)中的一個(gè)重要的優(yōu)點(diǎn)是可靠性。一臺服務(wù)器的系統(tǒng)崩潰并不影響到其余的服務(wù)器。

可擴(kuò)展性:

在分布式計(jì)算系統(tǒng)可以根據(jù)需要增加更多的機(jī)器。

資源共享:

共享數(shù)據(jù)是必不可少的應(yīng)用,如銀行,預(yù)訂系統(tǒng)。

靈活性:

由于該系統(tǒng)是非常靈活的,它很容易安裝,實(shí)施和調(diào)試新的服務(wù)。

更快的速度:

分布式計(jì)算系統(tǒng)可以有多臺計(jì)算機(jī)的計(jì)算能力,使得它比其他系統(tǒng)有更快的處理速度。

開放系統(tǒng):

由于它是開放的系統(tǒng),本地或者遠(yuǎn)程都可以訪問到該服務(wù)。

更高的性能:

相較于集中式計(jì)算機(jī)網(wǎng)絡(luò)集群可以提供更高的性能(及更好的性價(jià)比)。

3、分布式計(jì)算的缺點(diǎn)

故障排除:

故障排除和診斷問題。

軟件:

更少的軟件支持是分布式計(jì)算系統(tǒng)的主要缺點(diǎn)。

網(wǎng)絡(luò):

網(wǎng)絡(luò)基礎(chǔ)設(shè)施的問題,包括:傳輸問題,高負(fù)載,信息丟失等。

安全性:

開發(fā)系統(tǒng)的特性讓分布式計(jì)算系統(tǒng)存在著數(shù)據(jù)的安全性和共享的風(fēng)險(xiǎn)等問題。

4、關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的比較

4.1、關(guān)系型數(shù)據(jù)庫

- 高度組織化結(jié)構(gòu)化數(shù)據(jù) 
- 結(jié)構(gòu)化查詢語言(SQL) (SQL) 
- 數(shù)據(jù)和關(guān)系都存儲在單獨(dú)的表中。 
- 數(shù)據(jù)操縱語言,數(shù)據(jù)定義語言 
- 嚴(yán)格的一致性
- 基礎(chǔ)事務(wù)

4.2、NoSQL

- 代表著不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預(yù)定義的模式
-鍵 - 值對存儲,列存儲,文檔存儲,圖形數(shù)據(jù)庫
- 最終一致性,而非ACID屬性
- 非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)
- CAP定理 
- 高性能,高可用性和可伸縮性

關(guān)系型數(shù)據(jù)庫的最大特點(diǎn)就是事務(wù)的一致性:傳統(tǒng)的關(guān)系型數(shù)據(jù)庫讀寫操作都是事務(wù)的,具有ACID的特點(diǎn),這個(gè)特性使得關(guān)系型數(shù)據(jù)庫可以用于幾乎所有對一致性有要求的系統(tǒng)中,如典型的銀行系統(tǒng)。
但是,在網(wǎng)頁應(yīng)用中,尤其是SNS應(yīng)用中,一致性卻不是顯得那么重要,用戶A看到的內(nèi)容和用戶B看到同一用戶C內(nèi)容更新不一致是可以容忍的,或者說,兩個(gè)人看到同一好友的數(shù)據(jù)更新的時(shí)間差那么幾秒是可以容忍的,因此,關(guān)系型數(shù)據(jù)庫的最大特點(diǎn)在這里已經(jīng)無用武之地,起碼不是那么重要了。
相反地,關(guān)系型數(shù)據(jù)庫為了維護(hù)一致性所付出的巨大代價(jià)就是其讀寫性能比較差,而像微博、facebook這類SNS的應(yīng)用,對并發(fā)讀寫能力要求極高,關(guān)系型數(shù)據(jù)庫已經(jīng)無法應(yīng)付(在讀方面,傳統(tǒng)上為了克服關(guān)系型數(shù)據(jù)庫缺陷,提高性能,都是增加一級memcache來靜態(tài)化網(wǎng)頁,而在SNS中,變化太快,memchache已經(jīng)無能為力了),因此,必須用新的一種數(shù)據(jù)結(jié)構(gòu)存儲來代替關(guān)系數(shù)據(jù)庫。
關(guān)系數(shù)據(jù)庫的另一個(gè)特點(diǎn)就是其具有固定的表結(jié)構(gòu),因此,其擴(kuò)展性極差,而在SNS中,系統(tǒng)的升級,功能的增加,往往意味著數(shù)據(jù)結(jié)構(gòu)巨大變動(dòng),這一點(diǎn)關(guān)系型數(shù)據(jù)庫也難以應(yīng)付,需要新的結(jié)構(gòu)化數(shù)據(jù)存儲。
于是,非關(guān)系型數(shù)據(jù)庫應(yīng)運(yùn)而生,由于不可能用一種數(shù)據(jù)結(jié)構(gòu)化存儲應(yīng)付所有的新的需求,因此,非關(guān)系型數(shù)據(jù)庫嚴(yán)格上不是一種數(shù)據(jù)庫,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲方法的集合。
必須強(qiáng)調(diào)的是,數(shù)據(jù)的持久存儲,尤其是海量數(shù)據(jù)的持久存儲,還是需要使用關(guān)系型數(shù)據(jù)庫的。

5、NoSQL的優(yōu)點(diǎn)/缺點(diǎn)

優(yōu)點(diǎn):

  • - 高可擴(kuò)展性
  • - 分布式計(jì)算
  • - 低成本
  • - 架構(gòu)的靈活性,半結(jié)構(gòu)化數(shù)據(jù)
  • - 沒有復(fù)雜的關(guān)系

缺點(diǎn):

  • - 沒有標(biāo)準(zhǔn)化
  • - 有限的查詢功能(到目前為止)
  • - 最終一致是不直觀的程序

 到此這篇關(guān)于關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫概述與優(yōu)缺點(diǎn)對比的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解SQL中Group By的使用教程

    詳解SQL中Group By的使用教程

    這篇文章主要介紹了SQL中Group By的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 很全的SQL中文解釋代碼

    很全的SQL中文解釋代碼

    學(xué)習(xí)sql的朋友可以參考下,中文版sql命令
    2008-04-04
  • IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫并行更新問題詳解

    IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫并行更新問題詳解

    這篇文章主要為大家介紹了IndexedDB瀏覽器內(nèi)建數(shù)據(jù)庫并行更新問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Spark?SQL小文件問題處理

    Spark?SQL小文件問題處理

    大量的小文件會影響Hadoop集群管理或者Spark在處理數(shù)據(jù)時(shí)的穩(wěn)定性,這篇文章主要介紹了Spark?SQL小文件問題的處理,感興趣的同學(xué)可以借鑒一下
    2023-04-04
  • 在SQL Server和Oracle中創(chuàng)建job

    在SQL Server和Oracle中創(chuàng)建job

    有的時(shí)候,我們可能需要在數(shù)據(jù)庫中設(shè)定一些自動(dòng)執(zhí)行的任務(wù)(job),以此來自動(dòng)完成一些包括統(tǒng)計(jì)、備份方面的需求,下面就簡單說明一下有關(guān)ms server和oracle兩種數(shù)據(jù)庫中如何新建自動(dòng)任務(wù)。
    2009-06-06
  • SQL分組函數(shù)group by和聚合函數(shù)(COUNT、MAX、MIN、AVG、SUM)的幾點(diǎn)說明

    SQL分組函數(shù)group by和聚合函數(shù)(COUNT、MAX、MIN、AVG、SUM)的幾點(diǎn)說明

    這篇文章主要介紹了SQL分組函數(shù)group by和聚合函數(shù)(COUNT、MAX、MIN、AVG、SUM)的幾點(diǎn)說明,需要的朋友可以參考下
    2020-11-11
  • DataGrip2022導(dǎo)入和導(dǎo)出sql文件圖文教程

    DataGrip2022導(dǎo)入和導(dǎo)出sql文件圖文教程

    這篇文章主要給大家介紹了關(guān)于DataGrip2022導(dǎo)入和導(dǎo)出sql文件的相關(guān)資料,DataGrip的導(dǎo)出功能也是相當(dāng)強(qiáng)大,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 使用 Navicat 創(chuàng)建數(shù)據(jù)庫并用JDBC連接的操作方法

    使用 Navicat 創(chuàng)建數(shù)據(jù)庫并用JDBC連接的操作方法

    這篇文章主要介紹了使用 Navicat 創(chuàng)建數(shù)據(jù)庫并用JDBC連接的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SQL查詢的優(yōu)化技巧詳解

    SQL查詢的優(yōu)化技巧詳解

    這篇文章主要介紹了SQL查詢的優(yōu)化技巧詳解,查詢優(yōu)化的本質(zhì)是讓數(shù)據(jù)庫優(yōu)化器為SQL語句選擇最佳的執(zhí)行計(jì)劃。一般來說,對于在線交易處理(OLTP)系統(tǒng)的數(shù)據(jù)庫,減少數(shù)據(jù)庫磁盤I/O是SQL語句性能優(yōu)化的首要方法,需要的朋友可以參考下
    2023-07-07
  • DBeaver執(zhí)行外部sql文件詳細(xì)圖文教程

    DBeaver執(zhí)行外部sql文件詳細(xì)圖文教程

    DBeaver最近才使用,以前使用的PL/SQL,有些不是很熟悉,記錄下來,下面這篇文章主要給大家介紹了關(guān)于DBeaver執(zhí)行外部sql文件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06

最新評論