日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

海量存储系列之九

發(fā)布時(shí)間:2024/1/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 海量存储系列之九 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
終于來(lái)到了COLA樹(shù)系,這套東西目前來(lái)看呢,確實(shí)不如LSM火,不過(guò)作為可選方案,也是個(gè)值得了解的嘗試,不過(guò)這塊因?yàn)橹挥幸唤MMIT的人搞了個(gè)東西出來(lái),所以其實(shí)真正的方案也語(yǔ)焉不詳?shù)摹男阅軄?lái)說(shuō),tokuDB的寫(xiě)入性能很高,但更新似乎不是很給力,查詢(xún)較好,占用較少的內(nèi)存。

http://www.mysqlperformanceblog.com/2009/04/28/detailed-review-of-tokutek-storage-engine/



這里有一些性能上的指標(biāo)和分析性文字。確實(shí)看起來(lái)很心動(dòng),不過(guò)這東西只適合磁盤(pán)結(jié)構(gòu),到了SSD似乎就掛了。原因不詳,因?yàn)闆](méi)有實(shí)際的看過(guò)他們的代碼,所以一切都是推測(cè),如果有問(wèn)題,請(qǐng)告知我。

先說(shuō)原理,上ppt?http://tokutek.com/presentations/bender-Scalperf-9-09.pdf,簡(jiǎn)單來(lái)說(shuō),就是一幫MIT的小子們,分析了一下為什么磁盤(pán)寫(xiě)性能這么慢,讀的性能也這么慢,然后一拍腦袋,說(shuō):“哎呀,我知道了,對(duì)于兩級(jí)的存儲(chǔ)(比如磁盤(pán)對(duì)應(yīng)內(nèi)存,或內(nèi)存對(duì)于緩存,有兩個(gè)屬性是會(huì)對(duì)整個(gè)查詢(xún)和寫(xiě)入造成影響的,一個(gè)是容量空間小但速度更快的存儲(chǔ)的size,另外一個(gè)則是一次傳輸?shù)腷lock的size.而我們要做的事情,就是盡可能讓每次的操作傳輸盡可能少的數(shù)據(jù)塊。

傳輸?shù)脑缴?#xff0c;那么查詢(xún)的性能就越好。

進(jìn)而,有人提出了更多種的解決方案。

?B-tree [Bayer, McCreight 72]

? cache-oblivious B-tree [Bender, Demaine, Farach-Colton 00]

? buffer tree [Arge 95]

? buffered-repositorytree[Buchsbaum,Goldwasser,Venkatasubramanian,Westbrook 00]

? Bε

tree[Brodal, Fagerberg 03]

? log-structured merge tree [O’Neil, Cheng, Gawlick, O’Neil 96]

? string B-tree [Ferragina, Grossi 99]

這些結(jié)構(gòu)都是用于解決這樣一個(gè)問(wèn)題,在磁盤(pán)上能夠創(chuàng)建動(dòng)態(tài)的有序查詢(xún)結(jié)構(gòu)。

在今天,主要想介紹的就是COLA,所謂cache-oblivious 就是說(shuō),他不需要知道具體的內(nèi)存大小和一個(gè)塊的大小,或者說(shuō),無(wú)論內(nèi)存多大,塊有多大,都可以使用同一套邏輯進(jìn)行處理,這無(wú)疑是具有優(yōu)勢(shì)的,因?yàn)閮?nèi)存大小雖然可以知道,但內(nèi)存是隨時(shí)可能被臨時(shí)的占用去做其他事情的,這時(shí)候,CO就非常有用了。

其他我就不多說(shuō)了,看一下細(xì)節(jié)吧~再說(shuō)這個(gè)我自己都快繞進(jìn)去了。

眾所周知的,磁盤(pán)需要的是順序?qū)懭?#xff0c;下一個(gè)問(wèn)題就是,怎么能夠保證數(shù)據(jù)的順序?qū)憽?/span>

我們假定有這樣一個(gè)空的數(shù)據(jù)集合

可以認(rèn)為樹(shù)的高度是log2N。

每行要么就是空的,要么就是滿的,每行數(shù)據(jù)都是排序后的數(shù)據(jù)。

如果再寫(xiě)一個(gè)值的時(shí)候,會(huì)寫(xiě)在第一行,比如寫(xiě)了3。

再寫(xiě)一個(gè)值11的時(shí)候,因?yàn)榈谝恍幸呀?jīng)寫(xiě)滿了,所以將3取出來(lái),和11做排序,嘗試寫(xiě)第二行。又因?yàn)榈诙幸矟M了,所以將第二行的5和10也取出,對(duì)3,11,5,10 進(jìn)行排序。寫(xiě)入第四行

這就是COLA的寫(xiě)入過(guò)程。

可以很清楚的看出,COLA的核心其實(shí)和LSM類(lèi)似,每次“將數(shù)據(jù)從上一層取出,與外部數(shù)據(jù)進(jìn)行歸并排序后寫(xiě)入新的array”的這個(gè)操作,對(duì)sas磁盤(pán)非常友好。因此,寫(xiě)入性能就會(huì)有非常大的提升。

并且因?yàn)閿?shù)據(jù)結(jié)構(gòu)簡(jiǎn)單,沒(méi)有維持太多額外的指針,所以相對(duì)的比較節(jié)省空間。

但這樣查詢(xún)會(huì)需要針對(duì)每個(gè)array都進(jìn)行一次二分查找。

性能似乎還不是很高,所以,他們想到了下面這種方式,把它的命名為fractal tree,分形樹(shù)。

用更簡(jiǎn)單的方法來(lái)說(shuō)的話呢,就是在merge的時(shí)候,上層持有下層數(shù)據(jù)的一個(gè)額外的指針。

來(lái)協(xié)助進(jìn)行二分查找。

這樣,利用空間換時(shí)間,他的查詢(xún)速度就又回到了log2N這個(gè)級(jí)別了。

到此,又一個(gè)有序結(jié)構(gòu)被我囫圇吞棗了。

嘿嘿

在下一篇,我們將進(jìn)入大家期待的分布式k-V場(chǎng)景,也就是noSQL的范疇了,讓我們撥開(kāi)nosql的神秘面紗,看看這東西到底意味著什么。


本文來(lái)源于"阿里中間件團(tuán)隊(duì)播客",原文發(fā)表時(shí)間"2012-01-06"

總結(jié)

以上是生活随笔為你收集整理的海量存储系列之九的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。