當(dāng)前位置:首頁(yè) > 技術(shù)學(xué)院 > 技術(shù)解析
[導(dǎo)讀]為增進(jìn)大家對(duì)數(shù)據(jù)存儲(chǔ)方式的認(rèn)識(shí),本文將對(duì)三種數(shù)據(jù)存儲(chǔ)方式予以介紹。

數(shù)據(jù)存儲(chǔ)具有很強(qiáng)的現(xiàn)實(shí)意義,只有采取合理的數(shù)據(jù)存儲(chǔ)方式,才能夠有利于數(shù)據(jù)的管理、檢索等。為增進(jìn)大家對(duì)數(shù)據(jù)存儲(chǔ)方式的認(rèn)識(shí),本文將對(duì)三種數(shù)據(jù)存儲(chǔ)方式予以介紹。如果你對(duì)數(shù)據(jù)存儲(chǔ)方式具有興趣,不妨繼續(xù)往下閱讀哦。

數(shù)據(jù)存儲(chǔ)在實(shí)際應(yīng)用中,就是怎么用數(shù)據(jù)庫(kù)把我們的業(yè)務(wù)數(shù)據(jù)保存起來(lái)。從宏觀角度看,大致包含三大類技術(shù):B-TREE,LSM&SSTable,列式存儲(chǔ)。

一、B-TREE

B-TREE和關(guān)系模型同步出現(xiàn)于70年代,到90年幾乎占領(lǐng)了所有的數(shù)據(jù)庫(kù)市場(chǎng)。B-TREE簡(jiǎn)單的理解就是多葉節(jié)點(diǎn)的樹(shù),每個(gè)葉節(jié)點(diǎn)并非是每行數(shù)據(jù),而是數(shù)據(jù)庫(kù)的的數(shù)據(jù)塊。這么設(shè)計(jì)的原因是樹(shù)的層次影響著搜索性能,而且磁盤(pán)的讀寫(xiě)是基于塊(BLOCK)的,使用塊可以大大減少節(jié)點(diǎn)數(shù)量,進(jìn)而減少樹(shù)的層次。

B-TREE的特點(diǎn)在于讀寫(xiě)性能比較穩(wěn)定,響應(yīng)時(shí)間和磁盤(pán)隨機(jī)讀寫(xiě)的時(shí)間成正比(10ms)。并且由于B-TREE對(duì)應(yīng)到數(shù)據(jù)庫(kù)的每條記錄,可以很容易的實(shí)現(xiàn)事務(wù)、行鎖和隔離級(jí)別。讀性能略高于LSM算法。而且B-TREE基于塊的存儲(chǔ)方式,可以很容易的把內(nèi)存中的塊和磁盤(pán)上的塊一一對(duì)應(yīng)起來(lái),很容易的實(shí)現(xiàn)緩存。在實(shí)際應(yīng)用中,前2-3級(jí)節(jié)點(diǎn)內(nèi)都可以在緩存中讀取,由此大大提高了訪問(wèn)效率。

而不足在于真正面對(duì)海量數(shù)據(jù)時(shí)(如數(shù)據(jù)量進(jìn)入到百億級(jí)別時(shí)),由于樹(shù)層數(shù)和緩存比率的減少,會(huì)導(dǎo)致性能逐步下降。此外由于B-TREE在寫(xiě)入時(shí)也需要通過(guò)搜索定位到葉節(jié)點(diǎn),因此相對(duì)于LSM,其寫(xiě)入時(shí)開(kāi)銷較大。PS:其實(shí)現(xiàn)在已經(jīng)出現(xiàn)了分布式的B-TREE,比如oracle的localeindex。

二、LSM&SSTable

目前主流的存儲(chǔ)架構(gòu)還是磁盤(pán)+內(nèi)存,磁盤(pán)順序讀寫(xiě)的性能高于隨機(jī)讀寫(xiě)三個(gè)數(shù)量級(jí),而在內(nèi)存中進(jìn)行隨機(jī)讀寫(xiě)的的性能也大于磁盤(pán)的三個(gè)數(shù)量級(jí),可以得出用磁盤(pán)當(dāng)做磁帶一樣只做順序讀寫(xiě),而把內(nèi)存當(dāng)做磁盤(pán),提供所有的隨機(jī)讀寫(xiě)訪問(wèn)的總體思想,這也就是出LSM-Tree的算法。

簡(jiǎn)單說(shuō)就是在內(nèi)存中維護(hù)一張MemTable,把所有最新的數(shù)據(jù)都寫(xiě)到其中,所有數(shù)據(jù)依據(jù)key值進(jìn)行排序(隨機(jī)讀寫(xiě))。當(dāng)MemTable的大小到大閾值之后,把它寫(xiě)到磁盤(pán)上,形成一個(gè)個(gè)的SSTable(順序?qū)?。每個(gè)SSTable構(gòu)造一個(gè)索引,由于SSTable中的數(shù)據(jù)都是排好序的,所以索引較小,可以保存在內(nèi)存里面,所以所有的索引搜索動(dòng)作都是在內(nèi)存進(jìn)行的(隨機(jī)讀)。

每次查找的過(guò)程如下:首先在MemTable中搜索(內(nèi)存隨機(jī)查找),如果沒(méi)有依次在每個(gè)SSTable的索引中查找(內(nèi)存隨機(jī)查找)。把查找從磁盤(pán)隨機(jī)動(dòng)作變成了基于內(nèi)存的隨機(jī)動(dòng)作。隨著SSTable的增多,搜索的次數(shù)會(huì)增加,為了提高性能,后臺(tái)會(huì)把多個(gè)SSTable合并為一個(gè)(如HBase、LevelDB等等)。并且提供布隆過(guò)濾器(BloomFilter)來(lái)過(guò)濾掉不需要的SSTable。從總體效果上看,寫(xiě)入的效率大大高于基于B-Tree的存儲(chǔ)引擎,而讀取性能接近于B-Tree。

LSM&SSTable在寫(xiě)入密集型應(yīng)用中有較大優(yōu)勢(shì),同時(shí)在讀取方面也有不錯(cuò)的表現(xiàn)。不足之處在于上面提到的,不定期對(duì)增加的SSTable進(jìn)行合并時(shí),對(duì)于數(shù)據(jù)庫(kù)會(huì)產(chǎn)生一定壓力。

由于這些特點(diǎn),LSM&SSTable大量應(yīng)用于許多組件中,比如HBase、LevelDB等KeyValue數(shù)據(jù)庫(kù)中,同時(shí)也在消息引擎Kafka和搜索引擎Solr使用。

三、列式存儲(chǔ)

以上兩種存儲(chǔ)引擎主要適合于聯(lián)機(jī)場(chǎng)景,如有大量的基于客戶各類行為數(shù)據(jù)的批量計(jì)算的推薦系統(tǒng)中,以及預(yù)計(jì)客戶的流動(dòng)性缺口等等。在這些場(chǎng)景中,列式存儲(chǔ)在性能上有非常明顯的優(yōu)勢(shì)。隨著各類大數(shù)據(jù)應(yīng)用的擴(kuò)展,列式存儲(chǔ)從和Hive共生的ORC,到和Spark共生的Parquet也被應(yīng)用到了各個(gè)數(shù)據(jù)分析應(yīng)用中。

從傳統(tǒng)的數(shù)據(jù)分析類應(yīng)用,到人工智能應(yīng)用,都需要遍歷整個(gè)數(shù)據(jù)集,上面也提到磁盤(pán)在順序讀寫(xiě)和隨機(jī)讀寫(xiě)性能方面的巨大差距,所以所有的數(shù)據(jù)倉(cāng)庫(kù)都會(huì)在全表遍歷中采用磁盤(pán)順序遍歷。所以遍歷的文件空間越小,性能越高。列式存儲(chǔ)按列對(duì)數(shù)據(jù)進(jìn)行保存,以減少數(shù)據(jù)庫(kù)每次訪問(wèn)的文件尺寸。

首先,分析應(yīng)用一般局限于對(duì)于表中的部分字段都分析,列是存儲(chǔ)可以讓引擎只訪問(wèn)部分字段,減少吞吐量。其次,列式存儲(chǔ)數(shù)據(jù)壓縮能力更強(qiáng)。因?yàn)樾屑?jí)別的存儲(chǔ)方式壓縮是基于數(shù)據(jù)塊,壓縮比大致為50%-70%左右,而且壓縮比越大,解壓縮對(duì)于CPU的占用也越大。由于單列內(nèi)的數(shù)據(jù)非常類似,尤其是各種碼值類的數(shù)據(jù),比如性別(男、女、其他),行數(shù)越多,壓縮比越大。10億客戶的性別,也可以簡(jiǎn)單的表達(dá)為如下這樣:“連續(xù)100個(gè)男性、連續(xù)50個(gè)女性、又連續(xù)80個(gè)男性、連續(xù)70個(gè)女性”,按照每行的位置依次表達(dá)下去。

再次,同樣由于列內(nèi)數(shù)據(jù)的取值范圍有限,也可通過(guò)位圖來(lái)表達(dá),比如10表示男,01表示女,因此只用2個(gè)bit就可以表示出來(lái),從而進(jìn)一步增加壓縮比。在在許多場(chǎng)景中能夠把以前數(shù)G的數(shù)據(jù)壓縮為幾百K。由此可以顯著降低批量計(jì)算時(shí)對(duì)于存儲(chǔ)的吞吐壓力和提升計(jì)算效率。

當(dāng)然列式存儲(chǔ)也并非完美,在更新時(shí)列式存儲(chǔ)相對(duì)行式存儲(chǔ),很難直接做到就地修改的效果,往往需要把整列鎖住,重新計(jì)算,重新生成整個(gè)列。所以列式存儲(chǔ)更多的適合于數(shù)據(jù)分析時(shí)需要全表遍歷的場(chǎng)景。

以上便是此次小編帶來(lái)的數(shù)據(jù)存儲(chǔ)相關(guān)內(nèi)容,通過(guò)本文,希望大家對(duì)數(shù)據(jù)存儲(chǔ)方式具備一定的了解。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來(lái)更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉