關(guān)系數(shù)據(jù)庫(kù)經(jīng)過(guò)幾十年的發(fā)展,已經(jīng)非常成熟,但同時(shí)也存在不足:

專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)江川免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
表結(jié)構(gòu)是強(qiáng)約束的,業(yè)務(wù)變更時(shí)擴(kuò)充很麻煩。
如果對(duì)大數(shù)據(jù)量的表進(jìn)行統(tǒng)計(jì)運(yùn)算,I/O會(huì)很高,因?yàn)榧词怪会槍?duì)某列進(jìn)行運(yùn)算,也需要將整行數(shù)據(jù)讀入內(nèi)存。
全文搜索只能使用 Like 進(jìn)行整表掃描,性能非常低。
針對(duì)這些不足,產(chǎn)生了不同的 NoSQL 解決方案,在某些場(chǎng)景下比關(guān)系數(shù)據(jù)庫(kù)更有優(yōu)勢(shì),但同時(shí)也犧牲了某些特性,所以不能片面的迷信某種方案,應(yīng)將其作為 SQL 的有利補(bǔ)充。
NoSQL != No SQL,而是:
NoSQL = Not Only SQL
典型的 NoSQL 方案分為4類:
Redis 是典型,其 value 是具體的數(shù)據(jù)結(jié)構(gòu),包括 string, hash, list, set, sorted set, bitmap, hyperloglog,常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器。
以 list 為例:
LPOP key 是移除并返回隊(duì)列左邊的第一個(gè)元素。
如果用關(guān)系數(shù)據(jù)庫(kù)就比較麻煩了,需要操作:
Redis 的缺點(diǎn)主要體現(xiàn)在不支持完成的ACID事務(wù),只能保證隔離性和一致性,無(wú)法保證原子性和持久性。
最大的特點(diǎn)是 no-schema,無(wú)需在使用前定義字段,讀取一個(gè)不存在的字段也不會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。
特點(diǎn):
以電商為例,不同商品的屬性差異很大,如冰箱和電腦,這種差異性在關(guān)系數(shù)據(jù)庫(kù)中會(huì)有很大的麻煩,而使用文檔數(shù)據(jù)庫(kù)則非常方便。
文檔數(shù)據(jù)庫(kù)的主要缺點(diǎn):
關(guān)系數(shù)據(jù)庫(kù)是按行來(lái)存儲(chǔ)的,列式數(shù)據(jù)庫(kù)是按照列來(lái)存儲(chǔ)數(shù)據(jù)。
按行存儲(chǔ)的優(yōu)勢(shì):
在某些場(chǎng)景下,這些優(yōu)勢(shì)就成為劣勢(shì)了,例如,計(jì)算超重人員的數(shù)據(jù),只需要讀取體重這一列進(jìn)行統(tǒng)計(jì)即可,但行式存儲(chǔ)會(huì)將整行數(shù)據(jù)讀取到內(nèi)存中,很浪費(fèi)。
而列式存儲(chǔ)中,只需要讀取體重這列的數(shù)據(jù)即可,I/O 將大大減少。
除了節(jié)省I/O,列式存儲(chǔ)還有更高的壓縮比,可以節(jié)省存儲(chǔ)空間。普通行式數(shù)據(jù)庫(kù)的壓縮比在 3:1 到 5:1 左右,列式數(shù)據(jù)庫(kù)在 8:1 到 30:1,因?yàn)閱蝹€(gè)列的數(shù)據(jù)相似度更高。
列式存儲(chǔ)的隨機(jī)寫效率遠(yuǎn)低于行式存儲(chǔ),因?yàn)樾惺酱鎯?chǔ)時(shí)同一行多個(gè)列都存儲(chǔ)在連續(xù)空間中,而列式存儲(chǔ)將不同列存儲(chǔ)在不連續(xù)的空間。
一般將列式存儲(chǔ)應(yīng)用在離線大數(shù)據(jù)分析統(tǒng)計(jì)場(chǎng)景,因?yàn)檫@時(shí)主要針對(duì)部分列進(jìn)行操作,而且數(shù)據(jù)寫入后無(wú)須更新。
關(guān)系數(shù)據(jù)庫(kù)通過(guò)索引進(jìn)行快速查詢,但在全文搜索的情景下,索引就不夠了,因?yàn)椋?/p>
假設(shè)有一個(gè)交友網(wǎng)站,信息表如下:
需要匹配性別、地點(diǎn)、語(yǔ)言列。
需要匹配性別、地點(diǎn)、愛好列。
實(shí)際搜索中,各種排列組合非常多,關(guān)系數(shù)據(jù)庫(kù)很難支持。
全文搜索引擎是使用 倒排索引 技術(shù),建立單詞到文檔的索引,例如上面的表信息建立倒排索引:
所以特別適合根據(jù)關(guān)鍵詞來(lái)查詢文檔內(nèi)容。
上面介紹了幾種典型的NoSQL方案,及各自的適用場(chǎng)景和特點(diǎn),您可以根據(jù)實(shí)際需求進(jìn)行選擇。
首先我們來(lái)了解一下線下培訓(xùn)。線下培訓(xùn)其實(shí)就和我們一直在學(xué)校讀書是一樣的。都是在一個(gè)教室里大家一起學(xué)習(xí)。好處呢,就是大家在一起學(xué)習(xí)氣氛比較好,能面對(duì)面的交流。壞處呢就是大家雖然都在一個(gè)教室,不可能照顧到每一位學(xué)員的。新手的話,老師前期會(huì)給你一些特殊的照顧,但是到了中后期就不會(huì)。強(qiáng)的照顧,中等的有可能還照顧,但大部分都是被淘汰的。
線上培訓(xùn)是避免了我們要去不同地方或省份去聽課的旅途勞頓,為我們省下了一筆不小的開支。價(jià)格上差別也比較大。線上相對(duì)來(lái)說(shuō)會(huì)更加優(yōu)惠一些,有網(wǎng)絡(luò)的地方就可以學(xué)習(xí),學(xué)習(xí)時(shí)間更加自由,學(xué)習(xí)成本低,也有更多的時(shí)間來(lái)練習(xí)項(xiàng)目,在家里,在宿舍就能夠?qū)W習(xí)。線下就稍微貴一些了,除去高昂的學(xué)費(fèi)之外,還得加上食宿費(fèi)用,支付的費(fèi)用中相當(dāng)一部分是“為高房租買單”。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,是一家性價(jià)比極高的教育機(jī)構(gòu)
前言:
MySQL與MongoDB都是開源的常用數(shù)據(jù)庫(kù),但是MySQL是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),MongoDB則是非關(guān)系型數(shù)據(jù)庫(kù),也叫文檔型數(shù)據(jù)庫(kù),是一種NoSQL的數(shù)據(jù)庫(kù)。它們各有各的優(yōu)點(diǎn),關(guān)鍵是看用在什么地方。所以我們所熟知的那些SQL語(yǔ)句就不適用于MongoDB了,因?yàn)镾QL語(yǔ)句是關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。
一、關(guān)系型數(shù)據(jù)庫(kù)-MySQL
1、在不同的引擎上有不同的存儲(chǔ)方式。
2、查詢語(yǔ)句是使用傳統(tǒng)的sql語(yǔ)句,擁有較為成熟的體系,成熟度很高。
3、開源數(shù)據(jù)庫(kù)的份額在不斷增加,mysql的份額頁(yè)在持續(xù)增長(zhǎng)。
4、缺點(diǎn)就是在海量數(shù)據(jù)處理的時(shí)候效率會(huì)顯著變慢。
二、非關(guān)系型數(shù)據(jù)庫(kù)-MongoDB
非關(guān)系型數(shù)據(jù)庫(kù)(nosql ),屬于文檔型數(shù)據(jù)庫(kù)。先解釋一下文檔的數(shù)據(jù)庫(kù),即可以存放xml、json、bson類型系那個(gè)的數(shù)據(jù)。這些數(shù)據(jù)具備自述性,呈現(xiàn)分層的樹狀數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)由鍵值(key=value)對(duì)組成。
1、存儲(chǔ)方式:虛擬內(nèi)存+持久化。
2、查詢語(yǔ)句:是獨(dú)特的MongoDB的查詢方式。
3、適合場(chǎng)景:事件的記錄,內(nèi)容管理或者博客平臺(tái)等等。
4、架構(gòu)特點(diǎn):可以通過(guò)副本集,以及分片來(lái)實(shí)現(xiàn)高可用。
5、數(shù)據(jù)處理:數(shù)據(jù)是存儲(chǔ)在硬盤上的,只不過(guò)需要經(jīng)常讀取的數(shù)據(jù)會(huì)被加載到內(nèi)存中,將數(shù)據(jù)存儲(chǔ)在物理內(nèi)存中,從而達(dá)到高速讀寫。
6、成熟度與廣泛度:新興數(shù)據(jù)庫(kù),成熟度較低,Nosql數(shù)據(jù)庫(kù)中最為接近關(guān)系型數(shù)據(jù)庫(kù),比較完善的DB之一,適用人群不斷在增長(zhǎng)。
三、MongoDB優(yōu)勢(shì)與劣勢(shì)
優(yōu)勢(shì):
1、在適量級(jí)的內(nèi)存的MongoDB的性能是非常迅速的,它將熱數(shù)據(jù)存儲(chǔ)在物理內(nèi)存中,使得熱數(shù)據(jù)的讀寫變得十分快。
2、MongoDB的高可用和集群架構(gòu)擁有十分高的擴(kuò)展性。
3、在副本集中,當(dāng)主庫(kù)遇到問(wèn)題,無(wú)法繼續(xù)提供服務(wù)的時(shí)候,副本集將選舉一個(gè)新的主庫(kù)繼續(xù)提供服務(wù)。
4、MongoDB的Bson和JSon格式的數(shù)據(jù)十分適合文檔格式的存儲(chǔ)與查詢。
劣勢(shì):
1、 不支持事務(wù)操作。MongoDB本身沒有自帶事務(wù)機(jī)制,若需要在MongoDB中實(shí)現(xiàn)事務(wù)機(jī)制,需通過(guò)一個(gè)額外的表,從邏輯上自行實(shí)現(xiàn)事務(wù)。
2、 應(yīng)用經(jīng)驗(yàn)少,由于NoSQL興起時(shí)間短,應(yīng)用經(jīng)驗(yàn)相比關(guān)系型數(shù)據(jù)庫(kù)較少。
3、MongoDB占用空間過(guò)大。
非關(guān)系型數(shù)據(jù)庫(kù)有他的缺點(diǎn),也有他的優(yōu)點(diǎn),他的優(yōu)點(diǎn)就是它統(tǒng)計(jì)數(shù)據(jù)數(shù)據(jù)的速度非常的快。
關(guān)系數(shù)據(jù)庫(kù)模型已經(jīng)流行了幾十年了,但是一種新類型的數(shù)據(jù)庫(kù)——被稱為NoSQL,正在引起企業(yè)的注意。下面是關(guān)于它的優(yōu)勢(shì)和劣勢(shì)的一個(gè)概述。二十多年以來(lái),對(duì)數(shù)據(jù)庫(kù)管理來(lái)說(shuō),關(guān)系數(shù)據(jù)庫(kù)(RDBMS)模型一直是一個(gè)占統(tǒng)治地位的數(shù)據(jù)庫(kù)模型。但是,今天,非關(guān)系數(shù)據(jù)庫(kù),“云”數(shù)據(jù)庫(kù),或“NoSQL”數(shù)據(jù)庫(kù)作為關(guān)系數(shù)據(jù)庫(kù)以外的一些選擇,正在引起大家的廣泛關(guān)注。在這篇文章里,我們將主要關(guān)注那些非關(guān)系的NoSQL數(shù)據(jù)庫(kù)的十大利弊:包括五大優(yōu)勢(shì)和五大挑戰(zhàn)。
NoSQL的五大優(yōu)勢(shì)
1,靈活的可擴(kuò)展性
多年以來(lái),數(shù)據(jù)庫(kù)管理員們都是通過(guò)“縱向擴(kuò)展”的方式(當(dāng)數(shù)據(jù)庫(kù)的負(fù)載增加的時(shí)候,購(gòu)買更大型的服務(wù)器來(lái)承載增加的負(fù)載)來(lái)進(jìn)行擴(kuò)展的,而不是通過(guò)“橫向擴(kuò)展”的方式(當(dāng)數(shù)據(jù)庫(kù)負(fù)載增加的時(shí)候,在多臺(tái)主機(jī)上分配增加的負(fù)載)來(lái)進(jìn)行擴(kuò)展。但是,隨著交易率和可用性需求的增加,數(shù)據(jù)庫(kù)也正在遷移到云端或虛擬化環(huán)境中,“橫向擴(kuò)展”在commodity hardware方面的經(jīng)濟(jì)優(yōu)勢(shì)變得更加明顯了,對(duì)各大企業(yè)來(lái)說(shuō),這種“誘惑”是無(wú)法抗拒的。
在commodity clusters上,要對(duì)RDBMS做“橫向擴(kuò)展”,并不是很容易,但是各種新類型的NoSQL數(shù)據(jù)庫(kù)主要是為了進(jìn)行透明的擴(kuò)展,來(lái)利用新節(jié)點(diǎn)而設(shè)計(jì)的,而且,它們通常都是為了低成本的commodity hardware而設(shè)計(jì)的。
2,大數(shù)據(jù)
在過(guò)去的十年里,正如交易率發(fā)生了翻天覆地的增長(zhǎng)一樣,需要存儲(chǔ)的數(shù)據(jù)量也發(fā)生了急劇地膨脹。O’Reilly把這種現(xiàn)象稱為:“數(shù)據(jù)的工業(yè)革命”。為了滿足數(shù)據(jù)量增長(zhǎng)的需要,RDBMS的容量也在日益增加,但是,對(duì)一些企業(yè)來(lái)說(shuō),隨著交易率的增加,單一數(shù)據(jù)庫(kù)需要管理的數(shù)據(jù)約束的數(shù)量也變得越來(lái)越讓人無(wú)法忍受了。現(xiàn)在,大量的“大數(shù)據(jù)”可以通過(guò)NoSQL系統(tǒng)(例如:Hadoop)來(lái)處理,它們能夠處理的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)超出了最大型的RDBMS所能處理的極限。
3,“永別了”!DBA們!(再見?)
在過(guò)去的幾年里,雖然一些RDBMS供應(yīng)商們聲稱在可管理性方面做出了很多的改進(jìn),但是高端的RDBMS系統(tǒng)維護(hù)起來(lái)仍然十分昂貴,而且還需要訓(xùn)練有素的DBA們的協(xié)助。DBA們需要親自參與高端的RDBMS系統(tǒng)的設(shè)計(jì),安裝和調(diào)優(yōu)。
NoSQL數(shù)據(jù)庫(kù)從一開始就是為了降低管理方面的要求而設(shè)計(jì)的:從理論上來(lái)說(shuō),自動(dòng)修復(fù),數(shù)據(jù)分配和簡(jiǎn)單的數(shù)據(jù)模型的確可以讓管理和調(diào)優(yōu)方面的要求降低很多。但是,DBA的死期將至的謠言未免有些過(guò)于夸張了。總是需要有人對(duì)關(guān)鍵性的數(shù)據(jù)庫(kù)的性能和可用性負(fù)責(zé)的。
個(gè)人不認(rèn)為nosql在少量數(shù)據(jù)存儲(chǔ)上有啥優(yōu)勢(shì)。nosql主要解決的是auto sharding的問(wèn)題,你不需要sharding,搞啥nosql. 作者:方圓 鏈接:
當(dāng)前題目:nosql劣勢(shì),nosql的數(shù)據(jù)安全性很強(qiáng)
URL網(wǎng)址:http://chinadenli.net/article8/dsgsoop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、定制開發(fā)、定制網(wǎng)站、網(wǎng)站營(yíng)銷、云服務(wù)器、靜態(tài)網(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)