溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)有哪些優(yōu)缺點(diǎn)

發(fā)布時(shí)間:2022-03-04 13:34:46 來(lái)源:億速云 閱讀:394 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)有哪些優(yōu)缺點(diǎn)”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)有哪些優(yōu)缺點(diǎn)”文章能幫助大家解決問(wèn)題。

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

    1、概念

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

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

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

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

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

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

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

    1、A (Atomicity) 原子性

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

    2、C (Consistency) 一致性

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

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

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

    4、D (Durability) 持久性

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

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

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

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

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

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

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

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

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

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

    分布式計(jì)算系統(tǒng)中的一個(gè)重要的優(yōu)點(diǎn)是可靠性。一臺(tái)服務(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)可以有多臺(tái)計(jì)算機(jī)的計(jì)算能力,使得它比其他系統(tǒng)有更快的處理速度。

    開(kāi)放系統(tǒng):

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

    更高的性能:

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

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

    故障排除:

    故障排除和診斷問(wèn)題。

    軟件:

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

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

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

    安全性:

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

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

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

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

    4.2、NoSQL

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

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

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

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

    • - 高可擴(kuò)展性

    • - 分布式計(jì)算

    • - 低成本

    • - 架構(gòu)的靈活性,半結(jié)構(gòu)化數(shù)據(jù)

    • - 沒(méi)有復(fù)雜的關(guān)系

    缺點(diǎn):

    • - 沒(méi)有標(biāo)準(zhǔn)化

    • - 有限的查詢功能(到目前為止)

    • - 最終一致是不直觀的程序

    關(guān)于“關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)有哪些優(yōu)缺點(diǎn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI