国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

為什么要從關(guān)系型數(shù)據(jù)庫轉(zhuǎn)向NoSQL

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 13:36:18
文檔

為什么要從關(guān)系型數(shù)據(jù)庫轉(zhuǎn)向NoSQL

為什么要從關(guān)系型數(shù)據(jù)庫轉(zhuǎn)向NoSQL:NoSQL系統(tǒng)一般都會宣傳一個特性,那就是性能好。為什么呢?關(guān)系型數(shù)據(jù)庫發(fā)展了這么多年,各種優(yōu)化工作已經(jīng)做得很深了,NoSQL系統(tǒng)一般都是吸收關(guān)系型數(shù)據(jù)庫的技術(shù),然后,到底是什么因素束縛了關(guān)系型數(shù)據(jù)庫的性能呢?我們從系統(tǒng)設(shè)計的角度看這個問題。 1.
推薦度:
導讀為什么要從關(guān)系型數(shù)據(jù)庫轉(zhuǎn)向NoSQL:NoSQL系統(tǒng)一般都會宣傳一個特性,那就是性能好。為什么呢?關(guān)系型數(shù)據(jù)庫發(fā)展了這么多年,各種優(yōu)化工作已經(jīng)做得很深了,NoSQL系統(tǒng)一般都是吸收關(guān)系型數(shù)據(jù)庫的技術(shù),然后,到底是什么因素束縛了關(guān)系型數(shù)據(jù)庫的性能呢?我們從系統(tǒng)設(shè)計的角度看這個問題。 1.

NoSQL系統(tǒng)一般都會宣傳一個特性,那就是性能好。為什么呢?關(guān)系型數(shù)據(jù)庫發(fā)展了這么多年,各種優(yōu)化工作已經(jīng)做得很深了,NoSQL系統(tǒng)一般都是吸收關(guān)系型數(shù)據(jù)庫的技術(shù),然后,到底是什么因素束縛了關(guān)系型數(shù)據(jù)庫的性能呢?我們從系統(tǒng)設(shè)計的角度看這個問題。 1. ?索

NoSQL系統(tǒng)一般都會宣傳一個特性,那就是性能好。為什么呢?關(guān)系型數(shù)據(jù)庫發(fā)展了這么多年,各種優(yōu)化工作已經(jīng)做得很深了,NoSQL系統(tǒng)一般都是吸收關(guān)系型數(shù)據(jù)庫的技術(shù),然后,到底是什么因素束縛了關(guān)系型數(shù)據(jù)庫的性能呢?我們從系統(tǒng)設(shè)計的角度看這個問題。

1. ?索引支持。

關(guān)系型數(shù)據(jù)庫創(chuàng)立之初沒有想到今天的互聯(lián)網(wǎng)應(yīng)用對可擴展性提出如此高的要求。因此,設(shè)計時主要考慮的是簡化用戶的工作,SQL語言的產(chǎn)生促成數(shù)據(jù)庫接口的標準化,從而形成了Oracle這樣的數(shù)據(jù)庫公司并帶動了上下游產(chǎn)業(yè)鏈的發(fā)展。關(guān)系型數(shù)據(jù)庫在單機存儲引擎支持索引,比如MySQL的InnoDB存儲引擎需要支持索引,而NoSQL系統(tǒng)的單機存儲引擎是純粹的,只需要支持基于主鍵的隨機讀取和范圍查詢。NoSQL系統(tǒng)在系統(tǒng)層面提供對索引的支持,比如有一個用戶表,主鍵為user_id,每個用戶有很多屬性,包括用戶名,照片ID(photo_id),照片URL,在NoSQL系統(tǒng)中如果需要對photo_id建立索引,可以維護一張分布式表,表的主鍵為形成的二元組。關(guān)系型數(shù)據(jù)庫由于需要在單機存儲引擎層面支持索引,大大降低了系統(tǒng)的可擴展性,使得單機存儲引擎的設(shè)計變得很復雜。

2. 事務(wù)并發(fā)處理。

關(guān)系型數(shù)據(jù)庫有一整套的關(guān)于事務(wù)并發(fā)處理的理論,比如鎖的粒度是表級,頁級還是行級,多版本并發(fā)控制機制MVCC,事務(wù)的隔離級別,死鎖檢測,回滾,等等。然而,互聯(lián)網(wǎng)應(yīng)用大多數(shù)的特點都是多讀少寫,比如讀和寫的比例是10 : 1,并且很少有復雜事務(wù)需求,因此,一般可以采用更為簡單的copy-on-write技術(shù):單線程寫,多線程讀,寫的時候執(zhí)行copy-on-write,寫不影響讀服務(wù)。NoSQL系統(tǒng)這樣的假設(shè)簡化了系統(tǒng)的設(shè)計,減少了很多操作的overhead,提高了性能。

3. 動態(tài)還是靜態(tài)的數(shù)據(jù)結(jié)構(gòu)。

關(guān)系型數(shù)據(jù)庫的存儲引擎總是一顆磁盤B+樹,為了提高性能,可能需要有insert buffer聚合寫,query cache緩存讀,經(jīng)常需要實現(xiàn)類似Linux page cache的緩存管理機制。數(shù)據(jù)庫中的讀和寫是互相影響的,寫操作也因為時不時需要將數(shù)據(jù)flush到磁盤而性能不高。簡而言之,關(guān)系型數(shù)據(jù)庫存儲引擎的數(shù)據(jù)結(jié)構(gòu)是通用的動態(tài)更新的B+樹,然而,在NOSQL系統(tǒng)中,比如Bigtable中采用SSTable + MemTable的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)先寫入到內(nèi)存的MemTable,達到一定大小或者超過一定時間才會dump到磁盤生成SSTable文件,SSTable是只讀的。如果說關(guān)系型數(shù)據(jù)庫存儲引擎的數(shù)據(jù)結(jié)構(gòu)是一顆動態(tài)的B+樹,那么SSTable就是一個排好序的有序數(shù)組。很明顯,實現(xiàn)一個有序數(shù)據(jù)比實現(xiàn)一個動態(tài)B+樹且包含復雜的并發(fā)控制機制要簡單高效地多。

4 . Join操作。

關(guān)系型數(shù)據(jù)庫需要在存儲引擎層面支持Join,而NoSQL系統(tǒng)一般根據(jù)應(yīng)用來決定Join實現(xiàn)的方式。舉個例子,有兩張表:用戶表和商品表,每個用戶下可能有若干個商品,用戶表的主鍵為,用戶和商品的關(guān)聯(lián)屬性存放在用戶表中,商品表的主鍵為item_id,商品屬性包括商品名,商品URL,等等。假設(shè)應(yīng)用需要查詢一個用戶的所有商品并顯示商品的詳細信息,普通的做法是先從用戶表查找指定用戶的所有item_id,然后對每個item_id去商品表查詢詳細信息,即執(zhí)行一次數(shù)據(jù)庫Join操作,這必然帶來了很多的磁盤隨機讀,并且由于Join帶來的隨機讀的局部性不好,緩存的效果往往也是有限的。在NoSQL系統(tǒng)中,我們往往可以將用戶表和商品表集成到一張寬表中,這樣雖然冗余存儲了商品的詳細信息,卻換來了查詢的高效。

關(guān)系型數(shù)據(jù)庫的性能瓶頸往往不在SQL語句解析上,而是在于需要支持完備的SQL特性。互聯(lián)網(wǎng)公司面臨的問題是應(yīng)用對性能和可擴展性要求很高,并且DBA和開發(fā)工程師水平比較高,可以通過犧牲一些接口友好性來換取更好的性能。NoSQL系統(tǒng)的一些設(shè)計,比如通過寬表實現(xiàn)Join操作,互聯(lián)網(wǎng)公司的DBA和開發(fā)工程師也做過,NOSQL系統(tǒng)只是加強了這種約束。從長遠來看,可以總結(jié)一套約束集合,并且定義一個SQL子集,只需要支持這個SQL子集就可以在不犧牲可擴展性的前提下支持比如90%以上的互聯(lián)網(wǎng)應(yīng)用。我想,NoSQL技術(shù)發(fā)展到這一步的時候就算是比較成熟了,這也是我們最終想做的事情。我們在設(shè)計和使用NoSQL系統(tǒng)的時候也可以適當轉(zhuǎn)化一下思維,如下:

1. 更大的數(shù)據(jù)量。很多人在使用MySQL的過程遇到記錄條數(shù)超過一定值,比如2000W的時候,數(shù)據(jù)庫性能開始下降,這個值的得出往往需要經(jīng)過大量的測試。然而,大多數(shù)的NoSQL系統(tǒng)可擴展性都比較好,能夠支持更大的數(shù)據(jù)量,因此也可以采用一些空間換時間的做法,比如通過寬表的方式實現(xiàn)Join。

2. 性能預估更加容易。關(guān)系型數(shù)據(jù)庫由于復雜的并發(fā)控制,insert buffer及類似page cache的讀寫優(yōu)化機制,性能估算相對較難,很多時候需要憑借經(jīng)驗或者經(jīng)過測試才能得出系統(tǒng)的性能。然后,NOSQL系統(tǒng)由于存儲引擎實現(xiàn),并發(fā)控制機制等相對簡單,可以通過硬件的性能指標在系統(tǒng)設(shè)計之處大致預估系統(tǒng)的性能,性能預估可操作性相對更強。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

為什么要從關(guān)系型數(shù)據(jù)庫轉(zhuǎn)向NoSQL

為什么要從關(guān)系型數(shù)據(jù)庫轉(zhuǎn)向NoSQL:NoSQL系統(tǒng)一般都會宣傳一個特性,那就是性能好。為什么呢?關(guān)系型數(shù)據(jù)庫發(fā)展了這么多年,各種優(yōu)化工作已經(jīng)做得很深了,NoSQL系統(tǒng)一般都是吸收關(guān)系型數(shù)據(jù)庫的技術(shù),然后,到底是什么因素束縛了關(guān)系型數(shù)據(jù)庫的性能呢?我們從系統(tǒng)設(shè)計的角度看這個問題。 1.
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久99久久精品国产99热 | 欧美日韩精品在线 | 欧美国产在线视频 | 91精品国产色综合久久 | 欧美激情 在线 | 北条麻妃在线观看 | 国产香蕉视频 | 久久精品免费一区二区视 | 国产精品免费观看 | 中文亚洲欧美日韩无线码 | 久久精品一区二区国产 | 国产1区2区 | 美女网站一区二区三区 | 毛片视频网址 | 国产成人一区二区三区在线播放 | 精品一区二区三区免费毛片爱 | 国产精品成人一区二区不卡 | 国产成人精品一区二三区在线观看 | 么公又大又硬又粗又爽的视频 | 久久一本日韩精品中文字幕屁孩 | 一级全黄毛片 | 免费一级a毛片在线播放直播 | 国产精品美女久久久久 | www.久久99 | 亚洲图欧美 | 亚洲国产精品视频 | 99久久一区 | 国内免费视频成人精品 | 国产欧美日本在线 | 免费国产最新进精品视频 | 亚洲午夜久久久久中文字幕 | 免费视频精品一区二区 | 亚洲欧美一区二区三区不卡 | 国产日韩在线观看视频网站 | 国产精选在线视频 | 国产精品久久久久毛片 | 久久久91精品国产一区二区 | 久久久国产麻豆 | 99久久成人国产精品免费 | 欧美人与禽zoz0性伦交 | 久热中文字幕在线精品首页 |