想慢慢做个 mini 数据库,选 C++还是 GO?很纠结,希望老哥们给点意见

2019-09-30 16:21:30 +08:00
 yamasa

个人情况

本科四年基本一直用 C++,毕业接近 6 年,主要用 java,对关系型数据库比较感兴趣,用过 mysql 和 sqlserver,捯饬过慢查优化,索引设计和索引原理等,也看过《数据库设计概论》的一部分,但没有深入到源码层级。

短板分析

纠结点

从个人而言,最重要考虑的点依然是加深对操作系统 /网络等基本功的认识。希望有类似经验的老哥们能给点参考意见。目前想法是先做一个比较简陋基本版的,再慢慢添砖加瓦。如果能推荐一些学习 c++或者 go 的 resource 就更好了。

7316 次点击
所在节点    程序员
49 条回复
such
2019-09-30 17:55:48 +08:00
肯定是 c++,从 gc 上考虑,golang 天生劣势,既然有能力去用 c++写,为什么要用 go 呢
XIVN1987
2019-09-30 18:07:08 +08:00
c+others,最底层核心用 C 写,方便完全掌控内存布局,,中高层用其他语言写,降低开发难度
sadfQED2
2019-09-30 18:15:35 +08:00
我来泼个冷水,数据库应该是一个项目里面最不能出错的东西,也是性能要求就苛刻的。自己造的话涉及 io,网络,命令解析,索引等等,自己研究的话为什么不去读读 mysql 的源码?你自己也说没读过源码,你造这个不就是想学点东西吗,读源码明显能学到更多,实在是想自己造,Mysql 都是模块化的,你可以考虑造一个 Mysql 的存储引擎啊,以后出去面试也可以吹逼也好说一些啊
xieren58
2019-09-30 18:24:37 +08:00
都 9102 了, 不用 rust ?
VDimos
2019-09-30 18:33:51 +08:00
那当然是 rust 咯,c 艹需要一定功力,golang 性能肯定不如 rust,毕竟还有 runtime。
Kilerd
2019-09-30 18:51:40 +08:00
自带 GC 的语言你应该不会去考虑如何节省资源,什么时候该释放资源,所以 rust 更加适合这个场景。

BTW 广告来了 resource.rs
iPhoneXI
2019-09-30 18:55:09 +08:00
Mini 数据库是 kv 的还是 RDBMS
感觉后者挺复杂的
redis 这样的数据库源码还是很清晰的
lolizeppelin
2019-09-30 19:02:17 +08:00
不是应该参考 PG 然后用 C 么!
ClarkAbe
2019-09-30 19:05:45 +08:00
@90928yao #4 大多都是 json
yamasa
2019-09-30 19:18:37 +08:00
@iPhoneXI 想做 rdbms
ClericPy
2019-09-30 19:44:43 +08:00
推荐 rust 的说的都挺在理的, 多考虑一下吧

golang 槽点你先看一下能不能忍, 再决定要不要学, 不过 C 系基础学 go 入门也快

话说没调研过已有轮子? 看看源码提升比自己瞎摸索要大
yamasa
2019-09-30 20:27:32 +08:00
@ClericPy 是这样的 个人这几年的经验 感觉不带着问题看源码效率很低 往往是自己尝试实现的时候碰壁了 带着问题去看 就有豁然开朗的感觉。我也不是打算闷着头闭门造成,遇到问题肯定会去参考源码实现和一些论文的,感谢大佬。
yamasa
2019-09-30 20:28:13 +08:00
谢谢几位推荐 rust 的老哥,会认真考虑的。
Mirana
2019-09-30 20:48:55 +08:00
纠结的时间都可以写完了
hourann
2019-09-30 21:22:04 +08:00
搜一下 pingcap talentplan
keith1126
2019-09-30 21:34:49 +08:00
@Mirana #34

这个真写不完
zhuyichen1017
2019-09-30 22:29:50 +08:00
开个 repo 我来 watch 一下
activemq
2019-09-30 22:47:50 +08:00
用 Java 搞一个吧,完全跨平台,一个 jar 包走天下
Rorshach
2019-09-30 23:59:00 +08:00
35 楼正解
其实我感觉不用从头写一个的。。上个公开课多好,比如 35 楼,或者 CS186
miaoever
2019-10-01 04:40:51 +08:00
推荐 CMU Introduction of database system, 课程课件和视频 https://15445.courses.cs.cmu.edu/fall2019/
配套的作业 database in C++: https://github.com/cmu-db/bustub

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/605714

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX