NoSQL詳解:如何找到對(duì)的數(shù)據(jù)庫(kù)技術(shù)?

雖然關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)RDBMS在安裝和使用上仍然占有主要地位,但毋庸置疑,非關(guān)系型數(shù)據(jù)庫(kù)NoSQL技術(shù)已經(jīng)成為今天發(fā)展最快的數(shù)據(jù)庫(kù)技術(shù)。

涉縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!

NoSQL是對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的總稱,在某種程度上,它的性能和用途可能完全不同。NoSQL一詞最早產(chǎn)生于上世紀(jì)九十年代,意思是No SQL(沒(méi)有SQL語(yǔ)言),后來(lái)隨著時(shí)間和技術(shù)的發(fā)展,SQL界面仍然作為處理數(shù)據(jù)的方式存在,所以NoSQL又有了新的詮釋?zhuān)碞ot Only SQL(不只是SQL語(yǔ)言)。今天,NoSQL數(shù)據(jù)庫(kù)憑借著其非關(guān)系型、分布式、開(kāi)源和橫向擴(kuò)展等優(yōu)勢(shì),被認(rèn)為是下一代數(shù)據(jù)庫(kù)產(chǎn)品。

四種主要的NoSQL數(shù)據(jù)庫(kù)和它們主要的應(yīng)用場(chǎng)景

鍵值數(shù)據(jù)庫(kù):當(dāng)數(shù)據(jù)以鍵的形式訪問(wèn)時(shí),比如通過(guò)國(guó)際標(biāo)準(zhǔn)書(shū)號(hào)ISBN找一本書(shū),鍵值數(shù)據(jù)庫(kù)是最理想的。在這里,ISBN是鍵,書(shū)籍的其他信息就是值。必須知道鍵才能查詢,不過(guò)值是一堆無(wú)意義的數(shù)據(jù),讀取之后必須經(jīng)過(guò)翻譯。

文檔存儲(chǔ)數(shù)據(jù)庫(kù):該數(shù)據(jù)庫(kù)以文檔的形式管理和存儲(chǔ)數(shù)據(jù)。有點(diǎn)類(lèi)似于鍵值數(shù)據(jù)庫(kù),但文檔數(shù)據(jù)庫(kù)中的數(shù)據(jù)有結(jié)構(gòu)。與鍵值數(shù)據(jù)庫(kù)中值是一堆無(wú)意義的數(shù)據(jù)不同,文檔數(shù)據(jù)庫(kù)中數(shù)據(jù)以文檔的結(jié)構(gòu)被描述,典型的是JavaScript Object Notation (JSON)或XML.文檔存儲(chǔ)數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以通過(guò)定義的任何模式進(jìn)行查詢,但鍵值數(shù)據(jù)庫(kù)只能通過(guò)它的鍵進(jìn)行查詢。

列式數(shù)據(jù)庫(kù):也被稱為列式存儲(chǔ)或?qū)捔写鎯?chǔ),一改之前行式存儲(chǔ)的方式,對(duì)數(shù)據(jù)進(jìn)行列式存儲(chǔ)。在傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中,數(shù)據(jù)經(jīng)常以行來(lái)訪問(wèn)。以列式管理記錄的NoSQL數(shù)據(jù)庫(kù)可以管理大規(guī)模的動(dòng)態(tài)列。因?yàn)闆](méi)有固定的模式,所以列名和鍵可以變換。列式數(shù)據(jù)庫(kù)適用于不經(jīng)常寫(xiě)的情況,要滿足ACID(原子性、一致性、隔離性和持久性)的要求并不難,而且模式是變化的。

圖型數(shù)據(jù)庫(kù):圖型數(shù)據(jù)庫(kù)關(guān)注值與值之間的關(guān)系,用圖型的數(shù)學(xué)概念存儲(chǔ)數(shù)據(jù)。圖型數(shù)據(jù)庫(kù)用帶有點(diǎn)、邊緣和屬性的圖的結(jié)構(gòu)表示和存儲(chǔ)數(shù)據(jù)。在圖型數(shù)據(jù)庫(kù)中,每一個(gè)元素都包含一個(gè)直接的指向它毗鄰元素的點(diǎn),所以也就不需要索引查找。

NoSQL數(shù)據(jù)庫(kù)在網(wǎng)頁(yè)擴(kuò)展、大數(shù)據(jù)和分析部署等方面越來(lái)越流行。每一個(gè)種類(lèi)的NoSQL數(shù)據(jù)庫(kù)都有適用的不同類(lèi)型的應(yīng)用程序和用例,這就涉及到一個(gè)NoSQL社區(qū)常用的一個(gè)話題,即多樣持久性,或者說(shuō)根據(jù)數(shù)據(jù)庫(kù)處理應(yīng)用程序需求的不同,使用不同的數(shù)據(jù)庫(kù)系統(tǒng),用于不同的應(yīng)用程序和用例。

因此,使用NoSQL最重要的是使用正確的數(shù)據(jù)庫(kù),滿足具體的需求,哪怕是要引入一種新的數(shù)據(jù)庫(kù)系統(tǒng)。

NoSQL的優(yōu)勢(shì)和劣勢(shì)

那么,為什么考慮用NoSQL數(shù)據(jù)庫(kù)替代傳統(tǒng)數(shù)據(jù)庫(kù)呢?也許,前者大的有點(diǎn)在于它的去中心化、可擴(kuò)展、容錯(cuò)能力等屬性。很多公司應(yīng)用NoSQL數(shù)據(jù)庫(kù)技術(shù)是考慮了它的可擴(kuò)展能力。

用NoSQL數(shù)據(jù)庫(kù),你可以為每一個(gè)特殊的用例定制化你的數(shù)據(jù)管理解決方案。關(guān)系型數(shù)據(jù)庫(kù)可以通過(guò)不同的用例廣泛地應(yīng)用于實(shí)踐。通過(guò)考慮多樣持久性,組織可以選擇最能適應(yīng)特殊應(yīng)用場(chǎng)景的數(shù)據(jù)庫(kù)技術(shù)。

另外,大多數(shù)NoSQL產(chǎn)品都是輕量級(jí)的,因此花費(fèi)比較少。自從NoSQL產(chǎn)品被設(shè)計(jì)用來(lái)滿足特殊的用例和解決特殊的問(wèn)題,它的功能也就比大多數(shù)關(guān)系型數(shù)據(jù)庫(kù)少,因?yàn)楹笳咭獞?yīng)用于更廣泛的領(lǐng)域。因此,NoSQL數(shù)據(jù)庫(kù)需要的代碼更少,這也是和復(fù)雜的關(guān)系型數(shù)據(jù)庫(kù)相比具備的一項(xiàng)優(yōu)勢(shì)。

當(dāng)然,NoSQL也有它的缺點(diǎn)。ACID協(xié)議是關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn),但很多NoSQL數(shù)據(jù)庫(kù)做不到。如果ACID支持很關(guān)鍵,你必須要確定你選的NoSQL數(shù)據(jù)庫(kù)是否提供ACID。

NoSQL數(shù)據(jù)庫(kù)的另一個(gè)缺點(diǎn)是不支持SQL語(yǔ)言。經(jīng)過(guò)40多年的發(fā)展,SQL已經(jīng)成為訪問(wèn)數(shù)據(jù)的通用語(yǔ)言。一套數(shù)據(jù)庫(kù)系統(tǒng)不支持SQL語(yǔ)言就意味著要求開(kāi)發(fā)者學(xué)習(xí)不同的訪問(wèn)數(shù)據(jù)的語(yǔ)言。不過(guò),像有的NoSQL支持ACID一樣,有的NoSQL數(shù)據(jù)庫(kù)也支持SQL語(yǔ)言,但不像傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)那樣全面??傊?,想要不做重大更改就在NoSQL數(shù)據(jù)庫(kù)中運(yùn)行SQL查詢是不可能的。

今天的NoSQL市場(chǎng)依然很混亂。嚴(yán)格來(lái)講,有上百種不同的NoSQL數(shù)據(jù)庫(kù)可供選擇。而且沒(méi)有像關(guān)系型數(shù)據(jù)庫(kù)一樣正規(guī)的數(shù)據(jù)模型,因此NoSQL數(shù)據(jù)庫(kù)之間也是各不相同的,即便是同一種類(lèi)也有所不同。這種混亂給NoSQL的廣泛應(yīng)用帶來(lái)了阻礙,如果沒(méi)有深度的投資和研發(fā),它很難成功。

NoSQL 數(shù)據(jù)庫(kù)用例

讓我們分別看一下不同NoSQL數(shù)據(jù)庫(kù)的用例:

鍵值。鍵值數(shù)據(jù)庫(kù)可以滿足游戲、零售和移動(dòng)等應(yīng)用程序的高可用性、低延遲需求。它的模式比較靈活,在會(huì)議管理、服務(wù)廣告內(nèi)容和管理用戶或產(chǎn)品文件方面有卓越的表現(xiàn)??傊?dāng)數(shù)據(jù)不是按一定模式,而是包含很多種代碼的時(shí)候,可以使用鍵值數(shù)據(jù)庫(kù)。

但如果要管理不同數(shù)據(jù)集之間復(fù)雜的關(guān)系,或使用非限定的鍵進(jìn)行查詢,鍵值數(shù)據(jù)庫(kù)的表現(xiàn)就欠佳了。

文檔數(shù)據(jù)庫(kù)。這種數(shù)據(jù)庫(kù)特別適合用于為每一個(gè)文檔存儲(chǔ)不同種類(lèi)的數(shù)據(jù),可以實(shí)現(xiàn)跨數(shù)據(jù)的彈性的搜索。如果你的模式不是網(wǎng)格式的,你又需要指定鍵之外的東西進(jìn)行查詢,那么文檔存儲(chǔ)絕對(duì)是一個(gè)不錯(cuò)的選擇。文檔數(shù)據(jù)庫(kù)適合應(yīng)用于事件日志,線上購(gòu)物,內(nèi)容管理和深度分析流程。對(duì)于要求快速原型的項(xiàng)目來(lái)說(shuō),文檔數(shù)據(jù)庫(kù)的模式靈活性也是一大亮點(diǎn)。

不過(guò),文檔數(shù)據(jù)庫(kù)不適合復(fù)雜的事務(wù)處理。對(duì)于要求數(shù)據(jù)壓縮的應(yīng)用程序來(lái)說(shuō),文檔數(shù)據(jù)庫(kù)并不是一個(gè)很好的選擇,因?yàn)閺椥阅J揭馕吨缥臋n的數(shù)據(jù)不一致,也不可能被有效壓縮。

列式存儲(chǔ)。這種數(shù)據(jù)庫(kù)以列的方式存儲(chǔ)數(shù)據(jù)。與一個(gè)鍵(或識(shí)別符)相關(guān)的有很多列。和其他NoSQL數(shù)據(jù)庫(kù)一樣,它的模式很靈活,一個(gè)列式家族可以由不同的列組成。另外,列式存儲(chǔ)中的數(shù)據(jù)可以通過(guò)列訪問(wèn),而不是鍵。

列式存儲(chǔ)并不是一個(gè)新概念,它的變體過(guò)去作為一種概念應(yīng)用于關(guān)系型數(shù)據(jù)庫(kù)中(比如SAP Sybase IQ和IBM DB2 BLU)。雖然關(guān)系型列式存儲(chǔ)也聚焦與列,但它不允許跨行的列有所不同,這是它與NoSQL列式存儲(chǔ)不同之處。

對(duì)于不經(jīng)常寫(xiě),但要頻繁地一次讀取很多行的幾列的情況下,列式存儲(chǔ)是很有效率的。對(duì)于時(shí)間日志、內(nèi)容管理、分析的計(jì)算和分類(lèi),列式存儲(chǔ)都很有效。如果你有要過(guò)期的數(shù)據(jù),列式存儲(chǔ)非常有用,因?yàn)槟憧梢越⒁涣?,讓它自?dòng)過(guò)期。

如果是跨度很廣的查詢,不要用列式存儲(chǔ),因?yàn)槟憧赡懿坏貌恢匦略O(shè)計(jì)列。另外,列式存儲(chǔ)不是很適合ACID事務(wù)。

圖型數(shù)據(jù)庫(kù)。這種數(shù)據(jù)庫(kù)可能是和傳統(tǒng)數(shù)據(jù)庫(kù)以及其他NoSQL數(shù)據(jù)庫(kù)區(qū)別大的。圖型數(shù)據(jù)庫(kù)適用于數(shù)據(jù)元素之間相互關(guān)聯(lián),而且彼此之間關(guān)系的數(shù)量不確定的情況。

圖型數(shù)據(jù)庫(kù)最常用于社交媒體網(wǎng)絡(luò),比如LinkedIn和Facebook。當(dāng)然也有一些其他的應(yīng)用程序,比如分配路線和調(diào)度、定位系統(tǒng)、公共交通連接、地圖、課程計(jì)劃和網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)等。圖型數(shù)據(jù)庫(kù)的另一個(gè)實(shí)踐在于推薦引擎,常用語(yǔ)在線零售商。

圖型數(shù)據(jù)庫(kù)不適合用于數(shù)據(jù)經(jīng)常改變,常發(fā)生大規(guī)模數(shù)據(jù)之間實(shí)時(shí)更新的情況。另外,如果你計(jì)劃跨網(wǎng)絡(luò)分區(qū)數(shù)據(jù)庫(kù)的話,圖型數(shù)據(jù)庫(kù)很可能會(huì)性能下降。

六大考慮因素

NoSQL數(shù)據(jù)庫(kù)之間的很多不同給技術(shù)選擇帶來(lái)了難度。不同的數(shù)據(jù)庫(kù)類(lèi)型和產(chǎn)品有不同的架構(gòu)。即使同樣是NoSQL數(shù)據(jù)庫(kù),不同類(lèi)型之間也有所不同,沒(méi)有統(tǒng)一標(biāo)準(zhǔn),即便是訪問(wèn)數(shù)據(jù)的標(biāo)準(zhǔn)也不相同。這意味著在不同的數(shù)據(jù)庫(kù)中訪問(wèn)數(shù)據(jù),有不同的工具和應(yīng)用程序需要采用和學(xué)習(xí)。以下是需要考慮的一些方面。

快速變化。NoSQL領(lǐng)域是持續(xù)變動(dòng)的,特性不斷提升、功能不斷增加、甚至?xí)a(chǎn)生新產(chǎn)品。在選擇NoSQL數(shù)據(jù)庫(kù)時(shí),很難跟上最新最好的功能和產(chǎn)品。

對(duì)ACID的支持能力越來(lái)越強(qiáng)。NoSQL的一個(gè)早期賣(mài)點(diǎn)是它支持不要求全部ACID支持的事務(wù)。取代ACID,NoSQL提升了最終一致的基本可用軟件狀態(tài)服務(wù)(BASE)。雖然如此,很多應(yīng)用程序依然依賴ACID,NoSQL對(duì)ACID事務(wù)的支持是用戶的需求,也是它自己在不斷完善的。

缺少對(duì)多平臺(tái)的支持。大多數(shù)NoSQL數(shù)據(jù)庫(kù)起源于開(kāi)源運(yùn)動(dòng),因此基本上都運(yùn)行在Linux上,(或者Unix的變體)。如果你需要在Windows或者主機(jī)上部署數(shù)據(jù)庫(kù),你需要考慮商業(yè)產(chǎn)品,因?yàn)樯虡I(yè)產(chǎn)品對(duì)多平臺(tái)部署的支持性更好。

增加對(duì)SQL的支持。沒(méi)有SQL,查詢通常非常基礎(chǔ),可能要求使用高級(jí)語(yǔ)言的復(fù)雜的代碼。當(dāng)然,產(chǎn)品與產(chǎn)品之間也有所不同,不過(guò)最好選擇支持SQL的NoSQL數(shù)據(jù)庫(kù),因?yàn)楹芏嚅_(kāi)發(fā)者熟悉的還是SQL語(yǔ)言。

開(kāi)發(fā)多種類(lèi)型數(shù)據(jù)庫(kù)的能力。一些NoSQL數(shù)據(jù)庫(kù)允許你用鍵值對(duì)、文檔和圖型的彈性的組合建模和部署數(shù)據(jù)。另外,關(guān)系型數(shù)據(jù)庫(kù)開(kāi)始采用NoSQL能力。使用能夠開(kāi)發(fā)多種類(lèi)型數(shù)據(jù)庫(kù)存儲(chǔ)的數(shù)據(jù)庫(kù)系統(tǒng)能幫助你的組織獲得普適的持久性。

注意技術(shù)的版本。很多開(kāi)源項(xiàng)目運(yùn)行了很多年,但也沒(méi)有第一版。這些軟件可能很好用,但慎重的公司一般不會(huì)選擇沒(méi)有發(fā)行第一版的技術(shù)。

理解NoSQL數(shù)據(jù)庫(kù)

雖然NoSQL數(shù)據(jù)庫(kù)現(xiàn)在發(fā)展的很火,但該領(lǐng)域仍然面臨激烈競(jìng)爭(zhēng),日新月異。真正理解NoSQL數(shù)據(jù)局,需要深入了解不同數(shù)據(jù)庫(kù)引擎及其用例。選擇了錯(cuò)誤的技術(shù)很可能導(dǎo)致整個(gè)項(xiàng)目的失敗。

今天,有很多NoSQL數(shù)據(jù)庫(kù)系統(tǒng)得到了成功的應(yīng)用,一旦應(yīng)用到正確的地方,它將發(fā)揮出無(wú)窮的力量。

文章題目:NoSQL詳解:如何找到對(duì)的數(shù)據(jù)庫(kù)技術(shù)?
當(dāng)前鏈接:http://muchs.cn/article6/sdpoog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)面包屑導(dǎo)航、網(wǎng)站維護(hù)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)