NoSQL 數(shù)據(jù)庫因其功能性、易于開發(fā)性和可擴展性而廣受認可,它們越來越多地用于大數(shù)據(jù)和實時 Web 應(yīng)用程序,在本文中,我們通過示例討論 NoSQL、何時使用 NoSQL 與 SQL 及其用例。
專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)陳巴爾虎免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
NoSQL是一種下一代數(shù)據(jù)庫管理系統(tǒng) (DBMS)。NoSQL 數(shù)據(jù)庫具有靈活的模式,可用于構(gòu)建具有大量數(shù)據(jù)和高負載的現(xiàn)代應(yīng)用程序。
“NoSQL”一詞最初是由 Carlo Strozzi 在 1998 年創(chuàng)造的,盡管自 1960 年代后期以來就已經(jīng)存在類似的數(shù)據(jù)庫。然而,NoSQL 的發(fā)展始于 2009 年初,并且發(fā)展迅速。
在處理大量數(shù)據(jù)時,任何關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 的響應(yīng)時間都會變慢。為了解決這個問題,我們可以通過升級現(xiàn)有硬件來“擴大”信息系統(tǒng),這非常昂貴。但是,NoSQL 可以更好地橫向擴展并且更具成本效益。
NoSQL 對于非結(jié)構(gòu)化或非常大的數(shù)據(jù)對象(例如聊天日志數(shù)據(jù)、視頻或圖像)非常有用,這就是為什么 NoSQL 在微軟、谷歌、亞馬遜、Meta (Facebook) 等互聯(lián)網(wǎng)巨頭中特別受歡迎的原因。
一些流行的 NoSQL 數(shù)據(jù)庫包括:
隨著企業(yè)更快地積累更大的數(shù)據(jù)集,結(jié)構(gòu)化數(shù)據(jù)和關(guān)系模式并不總是適合。有必要使用非結(jié)構(gòu)化數(shù)據(jù)和大型對象來更好地捕獲這些信息。
傳統(tǒng)的 RDBMS 使用 SQL(結(jié)構(gòu)化查詢語言)語法來存儲和檢索結(jié)構(gòu)化數(shù)據(jù),相反,NoSQL 數(shù)據(jù)庫包含廣泛的功能,可以存儲和檢索結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化和多態(tài)數(shù)據(jù)。
有時,NoSQL 也被稱為“ 不僅僅是 SQL ”,強調(diào)它可能支持類似 SQL 的語言或與 SQL 數(shù)據(jù)庫并列。SQL 和 NoSQL DBMS 之間的一個區(qū)別是 JOIN 功能。SQL 數(shù)據(jù)庫使用 JOIN 子句來組合來自兩個或多個表的行,因為 NoSQL 數(shù)據(jù)庫本質(zhì)上不是表格的,所以這個功能并不總是可行或相關(guān)的。
但是,一些 NoSQL DBMS 可以執(zhí)行類似于 JOIN的操作——就像 MongoDB 一樣。這并不意味著不再需要 SQL DBMS,相反,NoSQL 和 SQL 數(shù)據(jù)庫傾向于以不同的方式解決類似的問題。
一般來說,在以下情況下,NoSQL 比 SQL 更可?。?/p>
許多行業(yè)都在采用 NoSQL,取代關(guān)系數(shù)據(jù)庫,從而為某些業(yè)務(wù)應(yīng)用程序提供更高的靈活性和可擴展性,下面給出了 NoSQL 數(shù)據(jù)庫的一些企業(yè)用例。
內(nèi)容管理是一組用于收集、管理、傳遞、檢索和發(fā)布任何格式的信息的過程,包括文本、圖像、音頻和視頻。NoSQL 數(shù)據(jù)庫可以通過其靈活和開放的數(shù)據(jù)模型為存儲多媒體內(nèi)容提供更好的選擇。
例如,福布斯在短短幾個月內(nèi)就構(gòu)建了一個基于 MongoDB 的定制內(nèi)容管理系統(tǒng),以更低的成本為他們提供了更大的敏捷性。
大數(shù)據(jù)是指太大而無法通過傳統(tǒng)處理系統(tǒng)處理的數(shù)據(jù)集,實時存儲和檢索大數(shù)據(jù)的系統(tǒng)在分析 歷史 數(shù)據(jù)的同時使用流處理來攝取新數(shù)據(jù),這是一系列非常適合 NoSQL 數(shù)據(jù)庫的功能。
Zoom使用 DynamoDB(按需模式)使其數(shù)據(jù)能夠在沒有性能問題的情況下進行擴展,即使該服務(wù)在 COVID-19 大流行的早期使用量激增。
物聯(lián)網(wǎng)設(shè)備具有連接到互聯(lián)網(wǎng)或通信網(wǎng)絡(luò)的嵌入式軟件和傳感器,能夠在無需人工干預(yù)的情況下收集和共享數(shù)據(jù)。隨著數(shù)十億臺設(shè)備生成數(shù)不清的數(shù)據(jù),IoT NoSQL 數(shù)據(jù)庫為 IoT 服務(wù)提供商提供了可擴展性和更靈活的架構(gòu)。
Freshub就是這樣的一項服務(wù),它從 MySQL 切換到 MongoDB,以更好地處理其大型、動態(tài)、非統(tǒng)一的數(shù)據(jù)集。
擁有數(shù)十億智能手機用戶,可擴展性正成為在移動設(shè)備上提供服務(wù)的企業(yè)面臨的最大挑戰(zhàn)。具有更靈活數(shù)據(jù)模型的 NoSQL DBMS 通常是完美的解決方案。
例如,The Weather Channel使用 MongoDB 數(shù)據(jù)庫每分鐘處理數(shù)百萬個請求,同時還處理用戶數(shù)據(jù)并提供天氣更新。
nosql數(shù)據(jù)庫的四種類型如下:
1.key-value鍵值存儲數(shù)據(jù)庫:
相關(guān)產(chǎn)品: Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached.
主要應(yīng)用: 內(nèi)容緩存,處理大量數(shù)據(jù)的高負載訪問,也用于系統(tǒng)日志。
優(yōu)點:查找速度快,大量操作時性能高。
2.列存儲數(shù)據(jù)庫:
相關(guān)產(chǎn)品: BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS.
主要應(yīng)用: 分布式數(shù)據(jù)的儲存與管理。
優(yōu)點:查找速度快,可擴展性強,容易進行分布式擴展。
缺點:功能相對局限。
3.文檔型數(shù)據(jù)庫
相關(guān)產(chǎn)品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit.
主要應(yīng)用: web應(yīng)用,管理面向文檔的數(shù)據(jù)或者類似的半結(jié)構(gòu)化數(shù)據(jù)。
優(yōu)點:數(shù)據(jù)結(jié)構(gòu)靈活,表結(jié)構(gòu)可變,復(fù)雜性低。
缺點:查詢效率低,且缺乏統(tǒng)一的查詢語言。
4.Graph圖形數(shù)據(jù)庫
相關(guān)產(chǎn)品: Neo4J、OrientDB、InfoGrid、GraphDB.
主要應(yīng)用: 復(fù)雜,互連接,低結(jié)構(gòu)化的圖結(jié)構(gòu)場合, 專注構(gòu)建關(guān)系圖譜。
優(yōu)點: 利用圖結(jié)構(gòu)相關(guān)算法, 可用于構(gòu)建復(fù)雜的關(guān)系圖譜。
缺點: 復(fù)雜度高。
如何玩轉(zhuǎn) NoSQL數(shù)據(jù)庫?作者:IT專家網(wǎng)
Weather公司CIO Bryson Koehler整理出了MongoDB,Riak和Cassandra等NoSQL數(shù)據(jù)庫的特性。他指出這其中最重要的特性是“NoSQL不會限制住你”。
Weather公司,致力于天氣報告和天氣預(yù)報業(yè)務(wù),其并不缺乏數(shù)據(jù),當然也不缺乏數(shù)據(jù)管理工具。但它為什么需要三種不同的NoSQL數(shù)據(jù)庫?
最近,我向Weather 公司的CIO Bryson Koehler提出了這個疑問,除了公司的CIO,Bryson Koehler還是其他很多業(yè)務(wù)單元的孵化者,包括Weather Channel,WeatherFX,Weather Underground,和Intellicast等。Weather公司每天獲取和處理著約20萬億字節(jié)數(shù)據(jù),對外提供當前全球天氣狀況,并為航空公司,緊急服務(wù),貨運商,公用事業(yè),保險,以及在線天氣網(wǎng)站和天氣應(yīng)用程序的用戶提供天氣預(yù)報服務(wù)。每天需求增加了數(shù)十億的天氣數(shù)據(jù)請求,并且預(yù)期響應(yīng)時間要在10毫秒左右。
Riak是Weather 公司的后臺NoSQL數(shù)據(jù)庫,服務(wù)于公司的事務(wù)性存儲公用網(wǎng)絡(luò)(SUN)數(shù)據(jù)獲取平臺,它運行在多個亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)的可用區(qū)域上,并以每小時15次的頻率捕獲超過20億氣象數(shù)據(jù)信息,。所以,Riak具有明確的處理規(guī)模,但該公司也使用Cassandra以及新近添加的MongoDB數(shù)據(jù)庫,為Weather.com 上IOS和Android移動應(yīng)用程序服務(wù)。
Weather 公司使用了不同的產(chǎn)品,Koehler解釋說,因為“不同的工具有不同的優(yōu)勢。
Cassandra,它服務(wù)于Weather 公司以及全球消費者使用的第三方天氣應(yīng)用的API數(shù)據(jù):“我們的數(shù)據(jù)分發(fā)平臺每秒處理數(shù)十萬的事務(wù),我們發(fā)現(xiàn)Cassandra在用于全球分發(fā)數(shù)據(jù)上是一個很棒的解決方案,并且在[數(shù)據(jù)庫]讀取方面體現(xiàn)出很高的可用性 “。它本質(zhì)上為全球各地消費者所使用的數(shù)據(jù)服務(wù),包括Weather 公司和第三方的天氣應(yīng)用程序。
MongoDB,它提供了Weather.com網(wǎng)站和移動應(yīng)用程序的中間層緩存功能:“離開我們的核心API,我們還沒有全部Weather.com內(nèi)容,所以MongoDB是容器和分發(fā)站,為Weather.com以及Android和iOS上的移動應(yīng)用程序服務(wù)。Mongo有很多好處,這些好處基于其內(nèi)建的JSON格式以及靈活性上?!?/p>
Riak,用于消費氣象數(shù)據(jù)和觀測,包括來自世界各地的圖片和視頻等:“我們喜愛Riak因其優(yōu)秀的數(shù)據(jù)攝取能力,而且是以一種全球分布式的方式來實現(xiàn)。這對于從全球分布式平臺上獲取數(shù)據(jù)的入站式數(shù)據(jù)庫是一個真正可靠的選擇。
我曾聽說Datastax,Basho和Couchbase的高管貶低MongoDB的可擴展性,但MongoDB指向大規(guī)模部署,在Facebook對超過200萬臺移動設(shè)備上應(yīng)用程序提供支持,在eHarmony公司,MongDB每天處理著數(shù)十億的潛在比賽預(yù)約。據(jù)Koehle所述,MongoDB為Weather.com和Weather.com移動應(yīng)用程序處理著“每天十億交易”,“毫無疑問,你可以通過配置和部署Mongo來處理大批量的交易數(shù)據(jù)?!?/p>
盡管如此,Koehler承認,他將“很樂于看到MongoDB繼續(xù)使全球集群和多位置[功能]更加無縫化且易于使用?!?這些屬于全球性的分布式集群,復(fù)制和負載平衡是Cassandra和Riak眾所周知的功能。
從規(guī)模討論的角度來看,很少有公司達到Weather公司的經(jīng)營規(guī)模。易于開發(fā),架構(gòu)靈活性和JSON數(shù)據(jù)處理使得MongoDB的成為世界上最流行的NoSQL數(shù)據(jù)庫。這就是為什么微軟和IBM都進行了MongoDB的模仿,如微軟的Azure DocumentDB和IBM的 Cloudant,而不是Cassandra和Riak。
Weather公司可以從三個NoSQL標準降低至兩個的過程中得到鞏固,Koehler說,但公司沒有準備好這么做。
“由于我們構(gòu)造了由許多不同的數(shù)據(jù)解決方案組成的網(wǎng)狀結(jié)構(gòu),我們目前的環(huán)境已過于復(fù)雜,”他說?!拔覀兿Mo團隊一些自由的空間,讓我們可以了解所有選擇的利弊,但你將會看到一些整合?!?/p>
到了那個時候,遷移將不在是一件難事,因為“關(guān)于NoSQL數(shù)據(jù)庫最重要的事情是,你不會被困在其中,” Koehler說?!叭绻愕募軜?gòu)和編碼正確,從一個數(shù)據(jù)庫遷移到另一個并不難。隨著模式的自由以及數(shù)據(jù)轉(zhuǎn)存技術(shù)的發(fā)展,無論前者是一個key-value存儲或其他什么形式,轉(zhuǎn)儲數(shù)據(jù)都將十分容易?!?/p>
對特定產(chǎn)品進程自定義編碼的復(fù)雜的存儲過程已經(jīng)一去不復(fù)返了,Koehler說,但關(guān)于“結(jié)構(gòu)化和編碼正確”還有很多需要考慮的地方?這樣做是為了避免特殊供應(yīng)商提供的工具和功能可能讓你身陷其中。他舉了亞馬遜網(wǎng)絡(luò)服務(wù)“(AWS)的消息服務(wù)為例。
“你不必讓服務(wù)在云中運行,”他解釋說?!澳憧梢灾徊渴鹱约旱腞abbitMQ的環(huán)境,而不是陷于其中,所以你可以將一個原先部署在AWS 上的應(yīng)用程序轉(zhuǎn)而部署在谷歌計算云服務(wù)上。無論它是數(shù)據(jù)平臺,存儲環(huán)境,或云計算環(huán)境,都要小心別讓自己局限在一個僅由一個供應(yīng)商提供的小范圍空間內(nèi)“。
轉(zhuǎn)載
什么是NoSQL數(shù)據(jù)庫?從名稱“非SQL”或“非關(guān)系型”衍生而來,這些數(shù)據(jù)庫不使用類似SQL的查詢語言,通常稱為結(jié)構(gòu)化存儲。這些數(shù)據(jù)庫自1960年就已經(jīng)存在,但是直到現(xiàn)在一些大公司(例如Google和Facebook)開始使用它們時,這些數(shù)據(jù)庫才流行起來。該數(shù)據(jù)庫最明顯的優(yōu)勢是擺脫了一組固定的列、連接和類似SQL的查詢語言的限制。有時,NoSQL這個名稱也可能表示“不僅僅SQL”,來確保它們可能支持SQL。 NoSQL數(shù)據(jù)庫使用諸如鍵值、寬列、圖形或文檔之類的數(shù)據(jù)結(jié)構(gòu),并且可以如JSON之類的不同格式存儲。
答案:A
1.文檔型數(shù)據(jù)庫
作為最受歡迎的NoSQL產(chǎn)品,文檔型數(shù)據(jù)庫MongoDB當仁不讓地占據(jù)了第一的位置,同時它也是所有NoSQL數(shù)據(jù)庫中排名最靠前的產(chǎn)品(總排行榜第七名)。Apache基金會的CouchDB排在第二,基于.Net的數(shù)據(jù)庫RavenDB排在第三,Couchbase排在第四。
2.鍵值(Key-value)數(shù)據(jù)庫
鍵值(Key-value)數(shù)據(jù)庫是NoSQL領(lǐng)域中應(yīng)用范圍最廣的,也是涉及產(chǎn)品最多的一種模型。從最簡單的BerkeleyDB到功能豐富的分布式數(shù)據(jù)庫Riak再到Amazon托管的DynamoDB不一而足。
在鍵值數(shù)據(jù)庫流行度排行中,Redis不出意外地排名第一,它是一款由Vmware支持的內(nèi)存數(shù)據(jù)庫,總體排名第十一。排在第二位的是Memcached,它在緩存系統(tǒng)中應(yīng)用十分廣泛。排在之后的是Riak、BerkeleyDB、SimpleDB、DynamoDB以及甲骨文的Oracle NoSQL數(shù)據(jù)庫。值得注意的是,Oracle NoSQL數(shù)據(jù)庫上榜不久,得分已經(jīng)翻番,上升勢頭非常迅猛。
3. 列式存儲
列式存儲被視為NoSQL數(shù)據(jù)庫中非常重要的一種模式,其中Cassandra流行度最高,它已經(jīng)由Facebook轉(zhuǎn)交給到Apache進行管理,同時Cassandra在全體數(shù)據(jù)庫排名中排在第十位,緊隨MongoDB成為第二受歡迎的NoSQL數(shù)據(jù)庫?;贖adoop的Hbase排在第二位,Hypertable排在第三。而Google的BigTable并未列入排名,原因是它并未正式公開。