大数据技术之海量存储学习(9)
沉沙 2019-05-14 来源 : 阅读 926 评论 0

摘要:本篇文章探讨了大数据技术之海量存储学习(9),希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章探讨了大数据技术之海量存储学习(9),希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

大数据技术之海量存储学习(9)


终于来到了COLA树系,这套东西目前来看呢,确实不如LSM火,不过作为可选方案,也是个值得了解的尝试,不过这块因为只有一组MIT的人搞了个东西出来,所以其实真正的方案也语焉不详的。从性能来说,tokuDB的写入性能很高,但更新似乎不是很给力,查询较好,占用较少的内存。
//www.mysqlperformanceblog.com/2009/04/28/detailed-review-of-tokutek-storage-engine/
这里有一些性能上的指标和分析性文字。确实看起来很心动,不过这东西只适合磁盘结构,到了SSD似乎就挂了。原因不详,因为没有实际的看过他们的代码,所以一切都是推测,如果有问题,请告知我。
先说原理,上ppt//tokutek.com/presentations/bender-Scalperf-9-09.pdf,简单来说,就是一帮MIT的小子们,分析了一下为什么磁盘写性能这么慢,读的性能也这么慢,然后一拍脑袋,说:“哎呀,我知道了,对于两级的存储(比如磁盘对应内存,或内存对于缓存,有两个属性是会对整个查询和写入造成影响的,一个是容量空间小但速度更快的存储的size,另外一个则是一次传输的block的size.而我们要做的事情,就是尽可能让每次的操作传输尽可能少的数据块。
传输的越少,那么查询的性能就越好。
进而,有人提出了更多种的解决方案。
B-tree[Bayer,McCreight72]
cache-obliviousB-tree[Bender,Demaine,Farach-Colton00]
buffertree[Arge95]
buffered-repositorytree[Buchsbaum,Goldwasser,Venkatasubramanian,Westbrook00]

tree[Brodal,Fagerberg03]
log-structuredmergetree[O'Neil,Cheng,Gawlick,O'Neil96]
stringB-tree[Ferragina,Grossi99]
这些结构都是用于解决这样一个问题,在磁盘上能够创建动态的有序查询结构。
在今天,主要想介绍的就是COLA,所谓cache-oblivious就是说,他不需要知道具体的内存大小和一个块的大小,或者说,无论内存多大,块有多大,都可以使用同一套逻辑进行处理,这无疑是具有优势的,因为内存大小虽然可以知道,但内存是随时可能被临时的占用去做其他事情的,这时候,CO就非常有用了。
其他我就不多说了,看一下细节吧~再说这个我自己都快绕进去了。
众所周知的,磁盘需要的是顺序写入,下一个问题就是,怎么能够保证数据的顺序写。
我们假定有这样一个空的数据集合

可以认为树的高度是log2N。
每行要么就是空的,要么就是满的,每行数据都是排序后的数据。
如果再写一个值的时候,会写在第一行,比如写了3。
再写一个值11的时候,因为第一行已经写满了,所以将3取出来,和11做排序,尝试写第二行。又因为第二行也满了,所以将第二行的5和10也取出,对3,11,5,10进行排序。写入第四行

这就是COLA的写入过程。
可以很清楚的看出,COLA的核心其实和LSM类似,每次“将数据从上一层取出,与外部数据进行归并排序后写入新的array”的这个操作,对sas磁盘非常友好。因此,写入性能就会有非常大的提升。
并且因为数据结构简单,没有维持太多额外的指针,所以相对的比较节省空间。
但这样查询会需要针对每个array都进行一次二分查找。
性能似乎还不是很高,所以,他们想到了下面这种方式,把它的命名为fractaltree,分形树。
用更简单的方法来说的话呢,就是在merge的时候,上层持有下层数据的一个额外的指针。
来协助进行二分查找。

这样,利用空间换时间,他的查询速度就又回到了log2N这个级别了。
到此,又一个有序结构被我囫囵吞枣了。
嘿嘿
在下一篇,我们将进入大家期待的分布式k-V场景,也就是noSQL的范畴了,让我们拨开nosql的神秘面纱,看看这东西到底意味着什么。    

      本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程