知乎:对数据库和分布式很感兴趣,学习路线是什么?
DistributedSystem
DataBase
对分布式系统学习还是有点心得,理论基础要打牢。
作者:Ed Huang
链接:https://www.zhihu.com/question/62464757/answer/202312500
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
对分布式系统学习还是有点心得,理论基础要打牢。
- 从存储系统入手,Google 的老三篇入门,最好能顺手把 6.824 做了,不难,智商正常的本科生都能做完,另外推荐一本书 Distributed systems for fun and profit
- 做完 6.824 后就可以从复制协议开始入手, Paxos 的几篇,Lamport 那篇有空膜拜一下好了,真正有价值的是 Paxos made live / Paxos made simple 那几篇,然后可以深入看看 Raft, 这个在 6.824 里面会用到.
- 然后开始开非 Google 系的存储系统比如 Dynamo ,Haystack 啊什么的还有一些最终一致性的系统,比如 FB 在一些系统上的设计虽然没有 Google 那么 fancy,但是看看还是不错的,至少知道在 FB 的数量级下会遇到那些问题,如何用糙快猛的办法 workaround... 和一些分布式计算系统和流计算系统,比如 MR 就不说了,比如 Dremel 啊,Spark 啊,MillWheel 啊,Sawzall 啊
- 把 SQL 优化器的一些基础知识学会咯,然后尽量用分布式系统的思想去思考。然后有点感觉了以后,可以看 F1 和 2017 的 Spanner 那两篇论文找找感觉,毕竟比较简单。然后就可以去找一些 OLAP 系统的论文看看了,HyPer 有一堆论文,Impala / Presto / Kudu 啊, AsterixDB 啊什么的,这个领域就多了去了。
- 这时候就可以开始实践了,自己动手撸没啥意思,而且工程量巨大无比,我建议还是要和靠谱的团队一起工作,进步很快,比如暑假没事或者实验室老师不管的话可以来我们这边实实习啊,毕竟鄙司是分布式系统和数据库技术融合得很不错的公司,离你们学校又近,打个车 20 分钟就到了,我的邮箱是 huang at http://pingcap.com,不过建议还是你把邮件发给 shenli,毕竟我推荐没有 iPhone 拿,他是有的...有机会未来见。
如何的才能更好的学习MIT6.824分布式系统课程?
作者:Larry
链接:https://www.zhihu.com/question/29597104/answer/128634213
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- MIT 6.824 确实是很好的 资源 自己在 今年4~6月 自学了16spring的内容lab
- 最好可以 独立完成 一个是里面用 go 有不少坑 可以踩踩 同时 有助于理解 分布式通常 要注意的问题 比如里面的 数据同步保证consistency, handle concurrency/repeated PRC, partition/fault tolerance, 自上而下 k/v system 可以work的 原理另外lab2 的raft 有助于深入理解 raft-extended paper的内容和 details 同时可以对 consensus algorithm 有一个了解 完成还是 挺有难度的 不过做完了 也很有成就感 Students' Guide to Raft :: Jon Gjengset 这个是 课程 TA的一个 blog 会很有用
- 这门课的 难点和内功 应该就是 paper了 很多时候感觉 没有一个纲要 不像很多课 有一个整体框架paper 也可以选择看 经典和感兴趣的 还有可以根据 mit 自己学生的反馈来看(exam的 最后有个 paper的 投票) 额 自己 是 paper看一遍 感兴趣会再 仔细读 然后再参考 上面的notes 额 看paper的经验也不行 能分享的 就是 之前一门课的professor Mike 有提过 ‘要想清楚 author 为什么要这样写 假设是什么 依据是什么 是不是make sense 那其他情况会 怎么样’ 感觉这样想 挺有帮助的另外 学这门课的 同时 可以再补充些 内容 一个是可以弄清楚一些 consistency models 比如 strict consistency, linearizability, sequential consistency, eventual consistency, causal consistency然后 总结看 paper中的system 是用了 哪个consistency model 为什么要这样用 优缺点
- 再就是 可以补充几篇paper 还是建议读下paxos
- 另外 chubby 和 bigtable 值得读读 尤其是 chubby 个人认为 chubby是 google 所有系统中最 fundamental的 系统 对理解其他 paper很有帮助 另外据说 chubby 一直在完善 更新 和最初的已经 有很大不同 google 可能什么时候会更新 一个新版本的 paper有一篇 paper ‘A Short Primer on Causal Consistency’ 简单明了 也值得读一下
- 还有就是 如果OS 内功可以的话 应该会对这门课 学习很有帮助 有很多是相通的 分享一遍paper ‘Hints for Computer System Design’ 提到很多 经典的 实用的方法 像是 cache, batch, end to end
- 另外这里 还是感谢下 mit 可以分享出 这么好的资源 帮助很大(虽然 自己还是小白 ...
分布式的学习不是很了解,数据库有些经验
作者:李晨曦
链接:https://www.zhihu.com/question/62464757/answer/202033688
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 可以按照如下步骤学习
- 入门:接触过数据库的基础知识和应用之后,就可以开始进行内核级的学习了,先学习传统的关系型数据库,因为它是一切数据库的基础,包括现在比较火的内存数据库,分布式数据库等。从IV Database System Implementation开始,把这本书吃透了,包括数据的物理存储结构,索引,查询引擎,缓冲池,SQL编译,查询优化,系统恢复,并发控制。然后实现上面这些理论知识,完成一个支持简单DML,DDL的数据库。一定要实现,只是学习理论,不动手实践是不可能深刻理解的,就像空中楼阁。《数据库系统实现(英文版)(第2版)》([美]加西亚·莫利纳,等)
- 深入理解:参考这个论文列表,把里面的论文都读一遍,了解关系型数据库历史,了解数据库的发展过程中走过的弯路,理解它为什么会变成现在这个样子rxin/db-readings同时也要锻炼系统级编程的能力,深刻理解操作系统的工作原理,并行编程,熟悉一些硬件的工作原理,为以后打下良好的基础。可以读一些优秀的开源数据库的源码,如Peloton的cmu-db/peloton,只有几万行代码,PostgreSQL的,代码非常多,不过注释非常清晰
- 进阶看最近几年数据库相关的论文,各个方向的发展都全面了解一下,可以参考这两个课程提到的论文Schedule - CMU 15-721 :: Advanced Database Systems (Spring 2017),Practical Course: Database Implementation,找一些感觉兴趣的论文复现一下里面提到的方法。很多算法,数据结构都有一定的适用场景和局限性,要通过自己实现与实验来深刻体会。
- 破茧成蝶这才是读博最重要的阶段,通过之前的学习,应该对数据库的各个方面都非常了解了,而且也打下了良好的编程能力,可以选1,2个感兴趣的方向,看看有没有什么可以改进,突破的点,想出自己的idea,实现并与现有的方法进行对比,如果可以做的很好,就非常厉害了。