NoSQL 數(shù)據(jù)庫(kù)因其功能性、易于開發(fā)性和可擴(kuò)展性而廣受認(rèn)可,它們?cè)絹碓蕉嗟赜糜诖髷?shù)據(jù)和實(shí)時(shí) Web 應(yīng)用程序,在本文中,我們通過示例討論 NoSQL、何時(shí)使用 NoSQL 與 SQL 及其用例。

創(chuàng)新互聯(lián)自2013年起,先為衢江等服務(wù)建站,衢江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為衢江企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
NoSQL是一種下一代數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS)。NoSQL 數(shù)據(jù)庫(kù)具有靈活的模式,可用于構(gòu)建具有大量數(shù)據(jù)和高負(fù)載的現(xiàn)代應(yīng)用程序。
“NoSQL”一詞最初是由 Carlo Strozzi 在 1998 年創(chuàng)造的,盡管自 1960 年代后期以來就已經(jīng)存在類似的數(shù)據(jù)庫(kù)。然而,NoSQL 的發(fā)展始于 2009 年初,并且發(fā)展迅速。
在處理大量數(shù)據(jù)時(shí),任何關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDBMS) 的響應(yīng)時(shí)間都會(huì)變慢。為了解決這個(gè)問題,我們可以通過升級(jí)現(xiàn)有硬件來“擴(kuò)大”信息系統(tǒng),這非常昂貴。但是,NoSQL 可以更好地橫向擴(kuò)展并且更具成本效益。
NoSQL 對(duì)于非結(jié)構(gòu)化或非常大的數(shù)據(jù)對(duì)象(例如聊天日志數(shù)據(jù)、視頻或圖像)非常有用,這就是為什么 NoSQL 在微軟、谷歌、亞馬遜、Meta (Facebook) 等互聯(lián)網(wǎng)巨頭中特別受歡迎的原因。
一些流行的 NoSQL 數(shù)據(jù)庫(kù)包括:
隨著企業(yè)更快地積累更大的數(shù)據(jù)集,結(jié)構(gòu)化數(shù)據(jù)和關(guān)系模式并不總是適合。有必要使用非結(jié)構(gòu)化數(shù)據(jù)和大型對(duì)象來更好地捕獲這些信息。
傳統(tǒng)的 RDBMS 使用 SQL(結(jié)構(gòu)化查詢語言)語法來存儲(chǔ)和檢索結(jié)構(gòu)化數(shù)據(jù),相反,NoSQL 數(shù)據(jù)庫(kù)包含廣泛的功能,可以存儲(chǔ)和檢索結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化和多態(tài)數(shù)據(jù)。
有時(shí),NoSQL 也被稱為“ 不僅僅是 SQL ”,強(qiáng)調(diào)它可能支持類似 SQL 的語言或與 SQL 數(shù)據(jù)庫(kù)并列。SQL 和 NoSQL DBMS 之間的一個(gè)區(qū)別是 JOIN 功能。SQL 數(shù)據(jù)庫(kù)使用 JOIN 子句來組合來自兩個(gè)或多個(gè)表的行,因?yàn)?NoSQL 數(shù)據(jù)庫(kù)本質(zhì)上不是表格的,所以這個(gè)功能并不總是可行或相關(guān)的。
但是,一些 NoSQL DBMS 可以執(zhí)行類似于 JOIN的操作——就像 MongoDB 一樣。這并不意味著不再需要 SQL DBMS,相反,NoSQL 和 SQL 數(shù)據(jù)庫(kù)傾向于以不同的方式解決類似的問題。
一般來說,在以下情況下,NoSQL 比 SQL 更可取:
許多行業(yè)都在采用 NoSQL,取代關(guān)系數(shù)據(jù)庫(kù),從而為某些業(yè)務(wù)應(yīng)用程序提供更高的靈活性和可擴(kuò)展性,下面給出了 NoSQL 數(shù)據(jù)庫(kù)的一些企業(yè)用例。
內(nèi)容管理是一組用于收集、管理、傳遞、檢索和發(fā)布任何格式的信息的過程,包括文本、圖像、音頻和視頻。NoSQL 數(shù)據(jù)庫(kù)可以通過其靈活和開放的數(shù)據(jù)模型為存儲(chǔ)多媒體內(nèi)容提供更好的選擇。
例如,福布斯在短短幾個(gè)月內(nèi)就構(gòu)建了一個(gè)基于 MongoDB 的定制內(nèi)容管理系統(tǒng),以更低的成本為他們提供了更大的敏捷性。
大數(shù)據(jù)是指太大而無法通過傳統(tǒng)處理系統(tǒng)處理的數(shù)據(jù)集,實(shí)時(shí)存儲(chǔ)和檢索大數(shù)據(jù)的系統(tǒng)在分析 歷史 數(shù)據(jù)的同時(shí)使用流處理來攝取新數(shù)據(jù),這是一系列非常適合 NoSQL 數(shù)據(jù)庫(kù)的功能。
Zoom使用 DynamoDB(按需模式)使其數(shù)據(jù)能夠在沒有性能問題的情況下進(jìn)行擴(kuò)展,即使該服務(wù)在 COVID-19 大流行的早期使用量激增。
物聯(lián)網(wǎng)設(shè)備具有連接到互聯(lián)網(wǎng)或通信網(wǎng)絡(luò)的嵌入式軟件和傳感器,能夠在無需人工干預(yù)的情況下收集和共享數(shù)據(jù)。隨著數(shù)十億臺(tái)設(shè)備生成數(shù)不清的數(shù)據(jù),IoT NoSQL 數(shù)據(jù)庫(kù)為 IoT 服務(wù)提供商提供了可擴(kuò)展性和更靈活的架構(gòu)。
Freshub就是這樣的一項(xiàng)服務(wù),它從 MySQL 切換到 MongoDB,以更好地處理其大型、動(dòng)態(tài)、非統(tǒng)一的數(shù)據(jù)集。
擁有數(shù)十億智能手機(jī)用戶,可擴(kuò)展性正成為在移動(dòng)設(shè)備上提供服務(wù)的企業(yè)面臨的最大挑戰(zhàn)。具有更靈活數(shù)據(jù)模型的 NoSQL DBMS 通常是完美的解決方案。
例如,The Weather Channel使用 MongoDB 數(shù)據(jù)庫(kù)每分鐘處理數(shù)百萬個(gè)請(qǐng)求,同時(shí)還處理用戶數(shù)據(jù)并提供天氣更新。
因?yàn)楹芏囗?xiàng)目根本用不到復(fù)雜的關(guān)聯(lián)查詢,才有了 nosql 數(shù)據(jù)庫(kù)。可以大大提高效率。
如果涉及到復(fù)雜的多表關(guān)聯(lián),那就老老實(shí)實(shí)用關(guān)系數(shù)據(jù)庫(kù)唄。
nosql是not only sql的意思。是近今年新發(fā)展起來的存儲(chǔ)系統(tǒng)。當(dāng)前使用最多的是key-value模型,用于處理超大規(guī)模的數(shù)據(jù)。
以下是摘自百度百科中的一部分
NoSQL 是非關(guān)系型數(shù)據(jù)存儲(chǔ)的廣義定義。它打破了長(zhǎng)久以來關(guān)系型數(shù)據(jù)庫(kù)與ACID理論大一統(tǒng)的局面。NoSQL 數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫(kù)無法比擬的性能優(yōu)勢(shì)。該術(shù)語在 2009 年初得到了廣泛認(rèn)同。
當(dāng)今的應(yīng)用體系結(jié)構(gòu)需要數(shù)據(jù)存儲(chǔ)在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲(chǔ)就是為了實(shí)現(xiàn)這個(gè)需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業(yè) NoSQL 實(shí)現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認(rèn)同。從這些NoSQL項(xiàng)目的名字上看不出什么相同之處:Hadoop、Voldemort、Dynomite,還有其它很多。
NoSQL與關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)理念比較
關(guān)系型數(shù)據(jù)庫(kù)中的表都是存儲(chǔ)一些格式化的數(shù)據(jù)結(jié)構(gòu),每個(gè)元組字段的組成都一樣,即使不是每個(gè)元組都需要所有的字段,但數(shù)據(jù)庫(kù)會(huì)為每個(gè)元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個(gè)角度來說它也是關(guān)系型數(shù)據(jù)庫(kù)性能瓶頸的一個(gè)因素。而非關(guān)系型數(shù)據(jù)庫(kù)以鍵值對(duì)存儲(chǔ),它的結(jié)構(gòu)不固定,每一個(gè)元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對(duì),這樣就不會(huì)局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。
訪問表的方式很多,基本原理是:客戶端連接服務(wù)端,正常登陸(通過身份驗(yàn)證),即可正常訪問到數(shù)據(jù)庫(kù)表,可用語句,也可直接打開數(shù)據(jù)庫(kù)表
關(guān)系型數(shù)據(jù)庫(kù)中的表都是存儲(chǔ)一些格式化的數(shù)據(jù)結(jié)構(gòu),每個(gè)元組字段的組成都一樣,即使不是每個(gè)元組都需要所有的字段,但數(shù)據(jù)庫(kù)會(huì)為每個(gè)元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進(jìn)行連接等操作,但從另一個(gè)角度來說它也是關(guān)系型數(shù)據(jù)庫(kù)性能瓶頸的一個(gè)因素。而非關(guān)系型數(shù)據(jù)庫(kù)以鍵值對(duì)存儲(chǔ),它的結(jié)構(gòu)不固定,每一個(gè)元組可以有不一樣的字段,每個(gè)元組可以根據(jù)需要增加一些自己的鍵值對(duì),這樣就不會(huì)局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。
特點(diǎn):
它們可以處理超大量的數(shù)據(jù)。
它們運(yùn)行在便宜的PC服務(wù)器集群上。
它們擊碎了性能瓶頸。
沒有過多的操作。
Bootstrap支持
缺點(diǎn):
但是一些人承認(rèn),沒有正式的官方支持,萬一出了差錯(cuò)會(huì)是可怕的,至少很多管理人員是這樣看。
此外,nosql并未形成一定標(biāo)準(zhǔn),各種產(chǎn)品層出不窮,內(nèi)部混亂,各種項(xiàng)目還需時(shí)間來檢驗(yàn)
而傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,例如:
1、High performance - 對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫的需求
web2.0網(wǎng)站要根據(jù)用戶個(gè)性化信息來實(shí)時(shí)生成動(dòng)態(tài)頁(yè)面和提供動(dòng)態(tài)信息,所以基本上無法使用動(dòng)態(tài)頁(yè)面靜態(tài)化技術(shù),因此數(shù)據(jù)庫(kù)并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬次讀寫請(qǐng)求。關(guān)系數(shù)據(jù)庫(kù)應(yīng)付上萬次SQL查詢還勉強(qiáng)頂?shù)米。菓?yīng)付上萬次SQL寫數(shù)據(jù)請(qǐng)求,硬盤IO就已經(jīng)無法承受了。其實(shí)對(duì)于普通的BBS網(wǎng)站,往往也存在對(duì)高并發(fā)寫請(qǐng)求的需求。
2、Huge Storage - 對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問的需求
對(duì)于大型的SNS網(wǎng)站,每天用戶產(chǎn)生海量的用戶動(dòng)態(tài),以國(guó)外的Friendfeed為例,一個(gè)月就達(dá)到了2.5億條用戶動(dòng)態(tài),對(duì)于關(guān)系數(shù)據(jù)庫(kù)來說,在一張2.5億條記錄的表里面進(jìn)行SQL查詢,效率是極其低下乃至不可忍受的。再例如大型web網(wǎng)站的用戶登錄系統(tǒng),例如騰訊,盛大,動(dòng)輒數(shù)以億計(jì)的帳號(hào),關(guān)系數(shù)據(jù)庫(kù)也很難應(yīng)付。
3、High Scalability High Availability- 對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求
在基于web的架構(gòu)當(dāng)中,數(shù)據(jù)庫(kù)是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個(gè)應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時(shí)候,你的數(shù)據(jù)庫(kù)卻沒有辦法像web server和app server那樣簡(jiǎn)單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力。對(duì)于很多需要提供24小時(shí)不間斷服務(wù)的網(wǎng)站來說,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行升級(jí)和擴(kuò)展是非常痛苦的事情,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移,為什么數(shù)據(jù)庫(kù)不能通過不斷的添加服務(wù)器節(jié)點(diǎn)來實(shí)現(xiàn)擴(kuò)展呢?
在上面提到的“三高”需求面前,關(guān)系數(shù)據(jù)庫(kù)遇到了難以克服的障礙,而對(duì)于web2.0網(wǎng)站來說,關(guān)系數(shù)據(jù)庫(kù)的很多主要特性卻往往無用武之地,例如:
1、數(shù)據(jù)庫(kù)事務(wù)一致性需求
很多web實(shí)時(shí)系統(tǒng)并不要求嚴(yán)格的數(shù)據(jù)庫(kù)事務(wù),對(duì)讀一致性的要求很低,有些場(chǎng)合對(duì)寫一致性要求也不高。因此數(shù)據(jù)庫(kù)事務(wù)管理成了數(shù)據(jù)庫(kù)高負(fù)載下一個(gè)沉重的負(fù)擔(dān)。
2、數(shù)據(jù)庫(kù)的寫實(shí)時(shí)性和讀實(shí)時(shí)性需求
對(duì)關(guān)系數(shù)據(jù)庫(kù)來說,插入一條數(shù)據(jù)之后立刻查詢,是肯定可以讀出來這條數(shù)據(jù)的,但是對(duì)于很多web應(yīng)用來說,并不要求這么高的實(shí)時(shí)性。
3、對(duì)復(fù)雜的SQL查詢,特別是多表關(guān)聯(lián)查詢的需求
任何大數(shù)據(jù)量的web系統(tǒng),都非常忌諱多個(gè)大表的關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報(bào)表查詢,特別是SNS類型的網(wǎng)站,從需求以及產(chǎn)品設(shè)計(jì)角度,就避免了這種情況的產(chǎn)生。往往更多的只是單表的主鍵查詢,以及單表的簡(jiǎn)單條件分頁(yè)查詢,SQL的功能被極大的弱化了。
因此,關(guān)系數(shù)據(jù)庫(kù)在這些越來越多的應(yīng)用場(chǎng)景下顯得不那么合適了,為了解決這類問題的非關(guān)系數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。
NoSQL 是非關(guān)系型數(shù)據(jù)存儲(chǔ)的廣義定義。它打破了長(zhǎng)久以來關(guān)系型數(shù)據(jù)庫(kù)與ACID理論大一統(tǒng)的局面。NoSQL 數(shù)據(jù)存儲(chǔ)不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫(kù)無法比擬的性能優(yōu)勢(shì)。該術(shù)語在 2009 年初得到了廣泛認(rèn)同。
當(dāng)今的應(yīng)用體系結(jié)構(gòu)需要數(shù)據(jù)存儲(chǔ)在橫向伸縮性上能夠滿足需求。而 NoSQL 存儲(chǔ)就是為了實(shí)現(xiàn)這個(gè)需求。Google 的BigTable與Amazon的Dynamo是非常成功的商業(yè) NoSQL 實(shí)現(xiàn)。一些開源的 NoSQL 體系,如Facebook 的Cassandra, Apache 的HBase,也得到了廣泛認(rèn)同。
網(wǎng)頁(yè)名稱:nosql多表連接,sqlserver多表連接
文章鏈接:http://chinadenli.net/article3/dsijdos.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、營(yíng)銷型網(wǎng)站建設(shè)、域名注冊(cè)、網(wǎng)站策劃、定制網(wǎng)站、電子商務(wù)
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)