監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
鷹潭網(wǎng)站建設(shè)公司

當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司

SQL到NOSQL的思維轉(zhuǎn)變

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

鷹潭網(wǎng)站建設(shè)www.diyphp.net

1, 索引撐持。聯(lián)系型數(shù)據(jù)庫(kù)創(chuàng)建之初沒(méi)有想到今日的互聯(lián)網(wǎng)運(yùn)用對(duì)可擴(kuò)大性提出如此高的懇求,因而,描繪時(shí)首要思索的是簡(jiǎn)化用戶的任務(wù),SQL言語(yǔ)的發(fā)生促進(jìn)數(shù)據(jù)庫(kù)接口的標(biāo)準(zhǔn)化,然后構(gòu)成了Oracle這樣的數(shù)據(jù)庫(kù)公司并帶動(dòng)了上下游產(chǎn)業(yè)鏈的開(kāi)展。聯(lián)系型數(shù)據(jù)庫(kù)在單機(jī)存儲(chǔ)引擎撐持索引,比方Mysql的Innodb存儲(chǔ)引擎需求撐持索引,而NOSQL體系的單機(jī)存儲(chǔ)引擎是樸實(shí)的,只需求撐持依據(jù)主鍵的隨機(jī)讀取和規(guī)模查詢。NOSQL體系在體系層面供給對(duì)索引的撐持,比方有一個(gè)用戶表,主鍵為user_id,每個(gè)用戶有許多特色,包羅用戶名,相片ID(photo_id),相片URL,在NOSQL體系中若是需求對(duì)photo_id樹(shù)立索引,可以保護(hù)一張分布式表,表的主鍵為構(gòu)成的二元組。聯(lián)系型數(shù)據(jù)庫(kù)由于需求在單機(jī)存儲(chǔ)引擎層面撐持索引,大大降低了體系的可擴(kuò)大性,使得單機(jī)存儲(chǔ)引擎的描繪變得很雜亂。

  2, 業(yè)務(wù)并發(fā)處置。聯(lián)系型數(shù)據(jù)庫(kù)有一整套的關(guān)于業(yè)務(wù)并發(fā)處置的理論,比方鎖的粒度是表級(jí),頁(yè)級(jí)仍是行級(jí),多版別并發(fā)操控機(jī)制MVCC,業(yè)務(wù)的阻隔等級(jí),死鎖檢測(cè),回滾,等等。但是,互聯(lián)網(wǎng)運(yùn)用大多數(shù)的特色都是多讀少些,比方讀和寫(xiě)的份額是10 : 1,而且很少有雜亂業(yè)務(wù)需求,因而,一般可以選用更為簡(jiǎn)略的copy-on-write技能:?jiǎn)尉€程寫(xiě),多線程讀,寫(xiě)的時(shí)分履行copy-on-write,寫(xiě)不影響讀效勞。NOSQL體系這樣的假定簡(jiǎn)化了體系的描繪,減少了許多操作的overhead,進(jìn)步了功能。

  3, 動(dòng)態(tài)仍是靜態(tài)的數(shù)據(jù)結(jié)構(gòu)。聯(lián)系型數(shù)據(jù)庫(kù)的存儲(chǔ)引擎總是一顆磁盤(pán)B+樹(shù),為了進(jìn)步功能,可以需求有insert buffer聚合寫(xiě),query cache緩存讀,常常需求完成相似Linux page cache的緩存管理機(jī)制。數(shù)據(jù)庫(kù)中的讀和寫(xiě)是相互影響的,寫(xiě)操作也由于時(shí)不時(shí)需求將數(shù)據(jù)flush到磁盤(pán)而功能不高。簡(jiǎn)而言之,聯(lián)系型數(shù)據(jù)庫(kù)存儲(chǔ)引擎的數(shù)據(jù)結(jié)構(gòu)是通用的動(dòng)態(tài)更新的B+樹(shù),但是,在NOSQL體系中,比方Bigtable中選用SSTable + MemTable的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)先寫(xiě)入到內(nèi)存的MemTable,到達(dá)必定巨細(xì)或許超越必定工夫才會(huì)dump到磁盤(pán)生成SSTable文件,SSTable是只讀的。若是說(shuō)聯(lián)系型數(shù)據(jù)庫(kù)存儲(chǔ)引擎的數(shù)據(jù)結(jié)構(gòu)是一顆動(dòng)態(tài)的B+樹(shù),那么SSTable就是一個(gè)排好序的有序數(shù)組。很明顯,完成一個(gè)有序數(shù)據(jù)比完成一個(gè)動(dòng)態(tài)B+樹(shù)且包羅雜亂的并發(fā)操控機(jī)制要簡(jiǎn)略高效地多。

  4, Join操作。聯(lián)系型數(shù)據(jù)庫(kù)需求在存儲(chǔ)引擎層面撐持Join,而NOSQL體系一般依據(jù)運(yùn)用來(lái)決議Join完成的方法。舉個(gè)比方,有兩張表:用戶表和商品表,每個(gè)用戶下可以有若干個(gè)商品,用戶表的主鍵為,用戶和商品的相關(guān)特色存放在用戶表中,商品表的主鍵為item_id,商品特色包羅商品名,商品URL,等等。假定運(yùn)用需求查詢一個(gè)用戶的一切商品并顯現(xiàn)商品的詳細(xì)信息,一般的做法是先從用戶表查找指定用戶的一切item_id,然后對(duì)每個(gè)item_id去商品表查詢?cè)敿?xì)信息,即履行一次數(shù)據(jù)庫(kù)Join操作,這必定帶來(lái)了許多的磁盤(pán)隨機(jī)讀,而且由于Join帶來(lái)的隨機(jī)讀的局部性欠好,緩存的作用往往也是有限的。在NOSQL體系中,咱們往往可以將用戶表和商品表集成到一張寬表中,這樣固然冗余存儲(chǔ)了商品的詳細(xì)信息,卻換來(lái)了查詢的高效。

  聯(lián)系型數(shù)據(jù)庫(kù)的功能瓶頸往往不在SQL句子解析上,而是在于需求撐持齊備的SQL特性?;ヂ?lián)網(wǎng)公司面對(duì)的問(wèn)題是運(yùn)用對(duì)功能和可擴(kuò)大性懇求很高,而且DBA和開(kāi)發(fā)工程師水平比擬高,可以顛末獻(xiàn)身一些接口友好性來(lái)交換更好的功能。NOSQL體系的一些描繪,比方顛末寬表完成Join操作,互聯(lián)網(wǎng)公司的DBA和開(kāi)發(fā)工程師也做過(guò),NOSQL體系僅僅加強(qiáng)了這種束縛。從長(zhǎng)遠(yuǎn)來(lái)看,可以總結(jié)一套束縛調(diào)集,而且界說(shuō)一個(gè)SQL子集,只需求撐持這個(gè)SQL子集就可以在不獻(xiàn)身可擴(kuò)大性的前提下?lián)纬直确?0%以上的互聯(lián)網(wǎng)運(yùn)用。我想,NOSQL技能開(kāi)展到這一步的時(shí)分就算是比擬成熟了,這也是咱們結(jié)尾想做的工作。咱們?cè)诿枥L和運(yùn)用NOSQL體系的時(shí)分也可以恰當(dāng)轉(zhuǎn)化一下思想,如下:

  1, 更大的數(shù)據(jù)量。許多人在運(yùn)用Mysql的進(jìn)程遇到記載條數(shù)超越必定值,比方2000W的時(shí)分,數(shù)據(jù)庫(kù)功能開(kāi)端下落,這個(gè)值的得出往往需求顛末許多的測(cè)驗(yàn)。但是,大多數(shù)的NOSQL體系可擴(kuò)大性都比擬好,可以撐持更大的數(shù)據(jù)量,因而也可以選用一些空間換工夫的做法,比方顛末寬表的方法完成Join。

  2, 功能預(yù)估愈加簡(jiǎn)略。聯(lián)系型數(shù)據(jù)庫(kù)由于雜亂的并發(fā)操控,insert buffer及相似page cache的讀寫(xiě)優(yōu)化機(jī)制,功能預(yù)算相對(duì)較難,許多時(shí)分需求憑仗經(jīng)歷或許顛末測(cè)驗(yàn)才干得出體系的功能。然后,NOSQL體系由于存儲(chǔ)引擎完成,并發(fā)操控機(jī)制等相對(duì)簡(jiǎn)略,可以顛末硬件的功能指標(biāo)在體系描繪之處大致預(yù)估體系的功能,功能預(yù)估可操作性相對(duì)更強(qiáng)

 

發(fā)布:2007-03-31 14:59    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
鷹潭OA
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普鷹潭網(wǎng)站建設(shè)公司其他應(yīng)用

鷹潭軟件開(kāi)發(fā)公司 鷹潭門(mén)禁系統(tǒng) 鷹潭物業(yè)管理軟件 鷹潭倉(cāng)庫(kù)管理軟件 鷹潭餐飲管理軟件 鷹潭網(wǎng)站建設(shè)公司