对数据库感兴趣,但完全接受不了 cpp

206 天前
 OliverDD

这两年用到比较多数据库,ClickHouse 、PostgreSQL 等,慢慢发现自己对数据库非常感兴趣,很想深入去了解各个数据库模块和设计。

看 CMU 的 15445/645 课程,结果整个项目基于 BusTub (一个 C++写的教学数据库),对于 CPP 我是真的提不起一丁点兴趣,看它各种操蛋语法很是痛苦,什么 move constructors 、左右值、&&,我感觉很难快速掌握这个“工具”去学习我想学的,反而会在工具上花费大量时间...

想问下各位大佬们有什么建议吗?

贴一下在看的资料:

6000 次点击
所在节点    程序员
45 条回复
YYSn5k19667xsfSA
206 天前
去找个 PingCAP 的实习,就能写 Golang/Rust 了
xtreme1
206 天前
令你痛苦的这些东西, 等价的玩意 rust 里也是一个不少...
tianxiaoxin
206 天前
可以跟着这个教程学一下,c 比 cpp 简单多了: https://github.com/akerdi/buildyourowndatabase
ipwx
206 天前
叶公好龙
jlkm2010
206 天前
misaka9982
206 天前
MIT 6.5830
tool2dx
206 天前
cpp 是用大量额外的开发时间,换去对细节的掌控。

如果项目周期不紧张,可以多练练,后期积累多了,就很牛逼了。
qingshanyuluo
206 天前
用的时候问 gpt 不就行了,我现在就一点不怕奇奇怪怪的语法
OliverDD
206 天前
@tianxiaoxin 谢谢回复。我想了解的是主要是 query engine 和 storage manager 两部份,附带一些通用的工具,看了下应该不适用
OliverDD
206 天前
@ipwx 呃,我认识你吗?为啥在我这刷存在感
OliverDD
206 天前
@misaka9982 非常感谢,我看了下是用 go 做项目的。我了解下。
nebkad
206 天前
Rust 神教教徒来传教了,不喜请忽略。

我跟你一样,对数据库的查询引擎和存储结合的部分很感兴趣,也觉得 CPP 的心智负担真的太大了,没办法让我在快速试验想法的同时,能够积累一些代码用于下一次的迭代。

如果只是要快速迭代,那可能用脚本语言或者别的灵活性很高的语言是可以的,但问题是这些语言虽然表现力强但是性能真的很成问题,很难用于积累。

所以 Rust 真的很适合,它的类型系统能够帮助你以很正交的方式来描述抽象设计,零成本抽象的设计原则提供了良好的运行时性能。

作为一个曾经的 CPP 程序员,我认为 Rust 真的不需要知道什么奇技淫巧或者 corner case 就能用得很好;当然这对于很多人来说,可能 Rust 的门槛真的很高,因为他们不一定需要这么强力的工具。但以你的目标来看( DBMS 核心组件),Rust 应该是恰当的。
wateryessence
206 天前
https://github.com/cmu-db/15445-bootcamp

不如趁还在学校的时候先学 c++,早晚也要学的
redbule
206 天前
https://cs186berkeley.net/
你需要这个,这是 java 实现的版本。不喜欢 cpp 就先绕过,先直奔目标学会基础
o562dsRcFqYl375i
206 天前
@ipwx 一针见血
ccsexyz
206 天前
你以为你喜欢,实际上你不喜欢。所以你需要做的是接受这一点。
lesismal
206 天前
@ipwx #4 太贴切了
fuyufjh
206 天前
看看大数据,Spark 、Hive 、Trino 这些,语言以 JVM 系的为主,查询路径上的知识差不多太多,存储、事务之类的被大幅简化了
BeiChuanAlex
206 天前
搞数据库 c++ 是一个永远也绕不过去的坎吧。。。。。。
Kumo31
206 天前
数据库本身就是一个性能敏感的东西,这里的体现不仅是在整体架构,算法设计上,还包括具体的代码实现细节,比如函数的传参方式,内存的申请时机... 也就是令你深恶痛绝的这些东西,虽然 Rust 能屏蔽了一些繁琐的语法细节,但你依然需要理解这些概念才能写出高性能的代码。

我觉得主要还是看你目的,如果只是想学习数据库,那也有不少 Go 甚至 Java 实现的课程,这些足够你理解数据库的核心概念、设计和机制。但如果想真正地从事数据库 or 其他底层基础设施工作,那 C++ 是绝对绕不过去的门槛。

不过不少分布式数据库的 SQL 层也是用 Go 写的,因为在这里网络通信和查询处理的代价更高,语言本身执行的性能相对没那么重要了,但依然充斥着各种 magic 。

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

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

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

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

© 2021 V2EX