通常,我們看到或聽(tīng)到的數(shù)據(jù)庫(kù)類型大多是關(guān)系數(shù)據(jù)庫(kù),例如MySQL,OracleRDBMS等。使用它們時(shí),您將編寫一些SQL語(yǔ)句來(lái)進(jìn)行添加,刪除和更正。今天我們要討論的NoSQL數(shù)據(jù)庫(kù)只是一個(gè)非關(guān)系數(shù)據(jù)庫(kù)。它的出現(xiàn)是為了解決關(guān)系數(shù)據(jù)庫(kù)的某些問(wèn)題,可以通過(guò)NoSQL來(lái)彌補(bǔ)。那么NoSQL數(shù)據(jù)庫(kù)是什么?NoSQL數(shù)據(jù)庫(kù)有哪些優(yōu)勢(shì)?如今,更流行的NoSQL數(shù)據(jù)庫(kù)包括Redis,MongoDB,HBase等。
NoSQL數(shù)據(jù)庫(kù)是什么?
NoSQL數(shù)據(jù)庫(kù)不像關(guān)系型數(shù)據(jù)庫(kù)那樣都有相同的特點(diǎn),遵循相同的標(biāo)準(zhǔn)。NoSQL數(shù)據(jù)庫(kù)類型多樣,可滿足不同場(chǎng)景的應(yīng)用需求,因此取得了巨大的成功。
NoSQL數(shù)據(jù)庫(kù)基本理念是以犧牲事務(wù)機(jī)制和強(qiáng)一致性機(jī)制,來(lái)獲取更好的分布式部署能力和橫向擴(kuò)展能力,創(chuàng)造出新的數(shù)據(jù)模型,使其在不同的應(yīng)用場(chǎng)景下,對(duì)特定業(yè)務(wù)數(shù)據(jù)具有更強(qiáng)的處理性能。
NoSQL數(shù)據(jù)庫(kù)最初是為了滿足互聯(lián)網(wǎng)的業(yè)務(wù)需求而誕生的,互聯(lián)網(wǎng)數(shù)據(jù)具有大量化、多樣化、快速化等特點(diǎn)。
NoSQL數(shù)據(jù)庫(kù)有哪些優(yōu)勢(shì)?
在信息化時(shí)代背景下,互聯(lián)網(wǎng)數(shù)據(jù)增長(zhǎng)迅猛,數(shù)據(jù)集合規(guī)模已實(shí)現(xiàn)從GB、PB到ZB的飛躍。數(shù)據(jù)不僅僅是傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù),還包含了大量的非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),關(guān)系型數(shù)據(jù)庫(kù)無(wú)法存儲(chǔ)此類數(shù)據(jù)。
因此,很多互聯(lián)網(wǎng)公司著手研發(fā)新型的、非關(guān)系型的數(shù)據(jù)庫(kù),這類非關(guān)系型數(shù)據(jù)庫(kù)統(tǒng)稱為NoSQL數(shù)據(jù)庫(kù),其主要優(yōu)勢(shì)如下。
靈活的數(shù)據(jù)模型
互聯(lián)網(wǎng)數(shù)據(jù)如網(wǎng)站用戶信息、地理位置數(shù)據(jù)、社交圖譜、用戶產(chǎn)生的內(nèi)容、機(jī)器日志數(shù)據(jù)以及傳感器數(shù)據(jù)等,正在快速改變著人們的通信、購(gòu)物、廣告、娛樂(lè)等日常生活,沒(méi)有使用這些數(shù)據(jù)的應(yīng)用很快就會(huì)被用戶所遺忘。開(kāi)發(fā)者希望使用非常靈活的數(shù)據(jù)庫(kù),容納新的數(shù)據(jù)類型,并且不會(huì)被第三方數(shù)據(jù)提供商的數(shù)據(jù)結(jié)構(gòu)變化所影響。
關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)模型定義嚴(yán)格,無(wú)法快速容納新的數(shù)據(jù)類型。例如,若要存儲(chǔ)客戶的電話號(hào)碼、姓名、地址、城市等信息,則SQL數(shù)據(jù)庫(kù)需要提前知曉要存儲(chǔ)的是什么。這對(duì)于敏捷開(kāi)發(fā)模式來(lái)說(shuō)十分不方便,因?yàn)槊看瓮瓿尚绿匦詴r(shí),通常都需要改變數(shù)據(jù)庫(kù)的模式。
NoSQL數(shù)據(jù)庫(kù)提供的數(shù)據(jù)模型則能很好地滿足這種需求,各種應(yīng)用可以通過(guò)這種靈活的數(shù)據(jù)模型存儲(chǔ)數(shù)據(jù)而無(wú)須修改表;或者只需增加更多的列,無(wú)須進(jìn)行數(shù)據(jù)的遷移。
可伸縮性強(qiáng)
對(duì)企業(yè)來(lái)說(shuō),關(guān)系型數(shù)據(jù)庫(kù)一開(kāi)始是普遍的選擇。然而,在使用關(guān)系型數(shù)據(jù)庫(kù)的過(guò)程中卻遇到了越來(lái)越多的問(wèn)題,原因在于它們是中心化的,是縱向擴(kuò)展而不是橫向擴(kuò)展的。這使得它們不適合那些需要簡(jiǎn)單且動(dòng)態(tài)可伸縮性的應(yīng)用。
NoSQL數(shù)據(jù)庫(kù)從一開(kāi)始就是分布式、橫向擴(kuò)展的,因此非常適合互聯(lián)網(wǎng)應(yīng)用分布式的特性。
在互聯(lián)網(wǎng)應(yīng)用中,當(dāng)數(shù)據(jù)庫(kù)服務(wù)器無(wú)法滿足數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)訪問(wèn)的需求時(shí),只需要增加多臺(tái)服務(wù)器,將用戶請(qǐng)求分散到多臺(tái)服務(wù)器上,即可減少單臺(tái)服務(wù)器的性能瓶頸出現(xiàn)的可能性。
自動(dòng)分片
由于關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)的是結(jié)構(gòu)化的數(shù)據(jù),所以通常采用縱向擴(kuò)展,即單臺(tái)服務(wù)器要持有整個(gè)數(shù)據(jù)庫(kù)來(lái)確保可靠性與數(shù)據(jù)的持續(xù)可用性。這樣做的代價(jià)是非常昂貴的,而且擴(kuò)展也會(huì)受到限制。針對(duì)這種問(wèn)題的解決方案就是橫向擴(kuò)展,即添加服務(wù)器而不是擴(kuò)展單臺(tái)服務(wù)器的處理能力。
NoSQL數(shù)據(jù)庫(kù)通常都支持自動(dòng)分片,這意味著它們會(huì)自動(dòng)地在多臺(tái)服務(wù)器上分發(fā)數(shù)據(jù),而不需要應(yīng)用程序增加額外的操作。
自動(dòng)復(fù)制
NoSQL數(shù)據(jù)庫(kù)支持自動(dòng)復(fù)制。在NoSQL數(shù)據(jù)庫(kù)分布式集群中,服務(wù)器會(huì)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行備份,即將一份數(shù)據(jù)復(fù)制存儲(chǔ)在多臺(tái)服務(wù)器上。因此,當(dāng)多個(gè)用戶訪問(wèn)同一數(shù)據(jù)時(shí),可以將用戶請(qǐng)求分散到多臺(tái)服務(wù)器中。
同時(shí),當(dāng)某臺(tái)服務(wù)器岀現(xiàn)故障時(shí),其他服務(wù)器的數(shù)據(jù)可以提供備份,即NoSQL數(shù)據(jù)庫(kù)的分布式集群具有高可用性與災(zāi)備恢復(fù)的能力。
以上就是關(guān)于NoSQL數(shù)據(jù)庫(kù)是什么,以及NoSQL數(shù)據(jù)庫(kù)有哪些優(yōu)勢(shì)的內(nèi)容介紹,想了解更多關(guān)于NoSQL數(shù)據(jù)庫(kù)的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。