53 | 设计大型DMP系统(下):SSD拯救了所有的DBA
53 | 设计大型DMP系统(下):SSD拯救了所有的DBA
讲述:徐文浩
时长13:42大小12.55M
关系型数据库:不得不做的随机读写
Cassandra:顺序写和随机读
Cassandra 的数据模型
Cassandra 的写操作
Cassandra 的读操作
SSD:DBA 们的大救星
总结延伸
推荐阅读
课后思考
赞 20
提建议
精选留言(20)
- xindoo2019-09-04我想起来一个段子,某大厂对外宣称把mysql的性能提升了十几倍,其实是改用了SSD。
作者回复: 哈哈,其实在10-15年这段时间,这样的性能提升和解决方案是常态
共 3 条评论39 - 免费的人2019-09-04用户态程序 怎么控制顺序写还是随机写?
作者回复: 只追加不修改,一般操作系统和文件系统会为你处理好顺序写的问题的。 修改特定文件中间的内容,那自然就是随机写啦。
共 2 条评论32 - 学而不思则惘2020-08-04之前一直没有研究过Cassandra,看了这篇文章才知道,原来和hbase等系列的日志型nosql基本一致,同样的lms树的随机读取效率低,同样的内置布隆过滤器,内置的查询缓存,还有同样的compact,甚至大文件拆分,Google的BigTable还真是影响深远啊12
- leslie2019-09-04提出一点质疑希望老师不要介意啊,毕竟学习的过程以及和老师交互还是比较愉快:老师用CSV格式去说MYSQL好像不太合适吧,mysql其实很少会导出成CSV格式-oracle的特性,至少5.5和5.6都会导成sql格式,sql server都很少会用这种格式去导成CSV文件-导入不太方便,Oracle倒是这种形式最方便且速度方面最稳定。 老师说马上就要完课了:这门课还有多久啊?真正沉浸学习中发现课程结束的都超快,两门课结合着学习-发现时光如梭,前天刘老师的课刚收尾,老师的课就要结束了;真快。展开
作者回复: 欢迎多质疑,我写的内容其实也还是有不少错漏的。 嗯,其实我用CSV来举例子是希望简化描述问题。MySQL这样得数据库,底层的存储自然不是一个CSV这样的格式。 不过作为一门入门的课程,直接再去讲MySQL里面的存储格式,无论是篇幅还是难度可能对大部分同学都大了一些。 也许用更简单的数据库,比如SQLite的底层B+树的存储格式可能更合适一些。 课程内容到今天已经写完了,接下来会把写文章的时间回复掉大家所有的问题,做一些内容的订正,以及根据反馈再发几篇FAQ和加餐。
共 2 条评论7 - 安排2019-09-04b+ 树索引中会存储每行数据在硬盘中的物理地址吗?这个物理地址是不是由好几部分组成,比如柱面,磁道,扇区的组合。 那B+ 树索引本身又是怎么存放的呢?b+树要存到硬盘上的话需要做特殊的序列化吗?怎么才能保证从硬盘读入索引数据后快速的在内存生成一棵B+树呢?
作者回复: 可以这样做也可以不这样做。一般来说大部分都不会直接存放物理地址。仍然是通过操作系统的文件系统来管理的。 B+树序列化地存放在文件里面,反序列化加载的过程就是B+树生成的过程啊。
共 6 条评论7 - 易儿易2019-09-08透过现象看本质,跟着老师的讲解一层层剥离原理,知其然,并知所以然~希望以后自己也能深度分析技术原理进行技术选型,而不是盲从大流以及试试看不行就换……
作者回复: 👍加油
4 - 山间竹2020-01-06我想问一下,Cassandra在hdd上删除重写是个怎么样的机制呢?会不会出现碎片,然后直接影响到顺序大块写?
作者回复: 山间竹同学, 你好,Cassandra最新版本的代码我没有那么熟悉。不过早期版本的Cassandra用过很长一段时间,如果我没有记错的话,基本的逻辑是这样的。 1. 通过Write Ahead Log的方式先把操作写入到日志 2. 再写入数据到内存里面 3. 内存定期会Dump到磁盘上 4. 后台有进程做Compact来减少Dump的数据和日志 在做Compaction的过程中,顺序写的性能和在线访问的性能都会受一定影响。不过主要是磁盘IO,而不是碎片问题。可以认为Compaction其实就是不停做碎片整理。
共 4 条评论3 - Ki2020-09-20请问下、怎么快速找到一个软件对应的论文呢、比如我想找kafka的论文、或者是找flink的论文、该怎么找呢1
- 🄽🄸🅇🅄🅂2020-05-311、BloomFilter过滤掉不存在的数据的读取后,在读存在的数据的时候,还是要去硬盘读,“按照从新到旧的读取方式”,应该如何理解“从新到旧读取”呢?“从新到旧读”,是读一次还是读多次? 2、在进行合并compaction的时候,怎么知道合并后的数据地址?是用像前面讲内存的时候,讲到的页映射吗?还是说,合并compaction执行的就是类似MySQL的update操作?如果是这样的话,还是会有insert后,数据地址变动的问题在;展开
- brian2020-05-19老师,上一讲设计DMP kv数据库是选择 AeroSpike 这一讲用Cassandra,两者有什么区别吗?共 1 条评论
- hshayq2020-05-14今天刚看 ddia 中说明 Cassandra 的存储原理,没想到这里也看到了(o゚v゚)ノ
- 王坤祥2020-04-16> SSD 硬盘本身的擦除后才能写入的机制,正好非常适合 Cassandra 的数据读写模式 各位,有谁帮忙解释下,我怎么get不到这一点呀?共 1 条评论
- 大头爸爸2020-03-30Cassandra和BigTable是什么区别啊?看了一下基本原理好像是一样的?共 1 条评论
- Anthony2020-03-21Cassandra的列族让我想到了es的存储方式,建一个个index来区分不同类型的数据,方便查询和存储
- fcb的鱼2020-02-08你好,问下 1.Cassandr 数据库在数据读取层面,通过内存缓存+ BloomFilte+硬盘的机制来保证随机读的问题。想问下这个随机读的过程中,请求只查询内存的数据占多大比例呢?在Cassandr数据库的架构里边,这个内存占用率是多少(比如是不是硬盘是10G,内存是1G).这种架构。 2.如果mysql在不考虑随机写的场景下,使用这种内存+硬盘的方案是不是也可以的?
作者回复: fcb的鱼同学, 你好 1. 对应比例要看实际的数据访问分布,并没有一个固定答案,其实可以回头重新看看讲存储分层里面的案例,你可以根据你的实际应用场景来估算。 内存占用也是要看你的硬件配置,你只配1G内存当然用不了2G对不对 2. 我不是MySQL的专家,没有仔细研读过MySQL的代码。不过MySQL肯定也会用类似BloomFilter机制,以及必然会有缓存,来减少对于磁盘的访问。以提升整个数据库在实际应用中的表现。
1 - 随心而至2019-10-24只有明白1+1,才可以推到公式,读这篇文章有种酣畅淋漓的感觉,赞赞赞
- prader262019-10-18cassendra (通过优化随机读取) 和ssd 硬盘可以更好的支持并发。
- 活的潇洒2019-09-15坚持到最后、你会收获不一样的自己、加油 day53 笔记:https://www.cnblogs.com/luoahong/p/11514616.html1
- 暴风雪2019-09-05中途一度落后了20多节课,然后每天都看一两篇再度追上了进度,课程越后面越精彩
作者回复: 谢谢
1 - 吴宇晨2019-09-05列式存储是按同一列数据cun
作者回复: 能更具体一点么?
1