详细说明在这里:
go 语言我用了多年,很熟悉,rust 没用过,但在我的感觉里,这个项目应该用 rust.
大家帮我分析分析,应该用什么好。
为什么想写一个强类型数据库,是因为优化自己的 dsl ,优化到了一定程度后,感觉很接近数据库的实现了。
dsl 现在是用 go 实现的。
详细说明在这里:
go 语言我用了多年,很熟悉,rust 没用过,但在我的感觉里,这个项目应该用 rust.
大家帮我分析分析,应该用什么好。
为什么想写一个强类型数据库,是因为优化自己的 dsl ,优化到了一定程度后,感觉很接近数据库的实现了。
dsl 现在是用 go 实现的。
我原来的dsl,需要生成sql来操作数据库,NetbaDB的目标大概就是省掉代码生成,直接支持强类型操作。
// @Entity(table="users")
type User struct {
// @PrimaryKey
Id uint64
// @Column("display_name")
DisplayName string
// @Omit
Password string
// @Ignore
SessionToken string
}
// @Entity(table="teams")
type Team struct {
// @PrimaryKey
ID uint64
}
// @Entity(table="members")
type Member struct {
// @Ref(Team.ID)
TeamID *uint64
}
已经确定用rust了,项目已经开始了,有兴趣的可以一起玩。
https://github.com/sskycn/netbadb
netbadb/
├── Cargo.toml
├── rust-toolchain.toml
├── crates/
│ ├── netbadb-types/ shared IDs, physical and semantic types
│ ├── netbadb-schema/ language-independent Canonical Schema IR
│ ├── netbadb-parser/ small typed-query AST and parser
│ ├── netbadb-hir/ name resolution and type checking
│ ├── netbadb-rel/ typed logical relational IR
│ ├── netbadb-compiler/ AST → HIR → logical plan
│ ├── netbadb-planner/ logical plan → physical plan
│ ├── netbadb-storage/ transactions, WAL, pages, buffer pool, and heap
│ ├── netbadb-executor/ synchronous physical-plan execution
│ └── netbadb-core/ native embedded database API
├── sdk/
│ ├── rust/ Rust application-facing re-export surface
│ └── go/ Go SDK / protocol direction and contract notes
├── docs/
├── examples/
└── tests/
|
1
选 go ,AI 时代,最好选一门程序员友好型。写代码不用你写了,审代码还得你自己申,选一门对自己友好的语言,别折腾自己。
|
|
2
推荐你用 rust
要是我就选择 go ,rust 说实话是真看不懂 |
|
3
talk is cheap ,让 AI 写 2 个 demo 对比 benchmark 一下呢?
|
|
4
数据库这种高并发低延迟的明显是 rust 更合适,含 gc 的都要排除
|
|
5
|
|
6
C# 其实最好,项目初期有 gc 可以快速迭代,中后期又可以用各种特性优化性能。
性能上限无限接近无 gc 的语言。 |
|
7
换个名吧,谷歌搜索 xdb 一大堆同名的项目,不利于推广
|
|
8
执行引擎用 go ,存储引擎 rust 。好奇存储引擎你打算怎么设计? LSM 吗?
|
|
9
@kurthumburgmtz97 好的,马上改名。
|
|
10
XDB 改为 NetbaDB 了,gpt 帮忙改的。
|
|
11
有性能要求的肯定是 rust ,不然后期优化 gc 延迟,得多麻烦。
|
|
bunaiAug 12
12
|
|
icecreamxuegaoAug 12 via Android
14
@sskycn 网吧 DB ?
|
|
fgwmlhdkkkwAug 12 via Android
15
go 没有装饰器,,,我建议用 rust 。
|
|
17
没用过 rust 那我不建议一上来就写数据库这种,rust 性能高的前提是你有正确的心智模型,否则起反效果。go 则是随便来个阿猫阿狗写出来的性能都不至于烂到家。
而且你做这种框架大概率要写宏,rust 的宏哪怕在你完全掌握语言本身之后,写起来都是挺困难的。 |
|
18
自己玩。就用 go 呗。
|
|
19
练手 Go ,生产 Rust
Go 有 gc ,数据库怎么能让你周期性地卡一下。 |
|
snxq1995Aug 12
20
不考虑其他语言吗,我最近在了解 zig ,感觉还不错。rust 入门失败 N 次了。go 不适合写数据库,原因同意上面的老哥,有 gc 的语言都不合适。
|
|
21
真正的关键点在于,rust 的语言特性把很多 bug 杀死在了编程之前,用 AI 写 rust 能让你的程序健壮很多。即使你不去看代码,编译器和自动化测试已经能找出很多 bug 了。
|
|
cndnsAug 12
22
V2DB
|
|
qxmqhAug 12
23
不如起名 NBDB 。牛逼 DB
|
|
YanSevenAug 12
24
有请 TiDB 的大佬分享经验。
|
|
ytFGAug 12
25
rustDB 或者 goDB
|
|
sqlmanAug 12
26
用 python (狗头)
|
|
shylockhgAug 12
27
好奇为啥准备做这玩意
|
|
zengxsAug 12
28
除了 rust/go 还有个老登语言可以选择:c++
|
|
29
已经开干了,最终决定用 rust 。
|
|
bootvueAug 12
31
都是渣渣 用 c++吧
|
|
ktyangAug 12
32
爷青回 感觉好久没看到这种帖子了
|
|
yfixxAug 12 via Android
33
有个 pgrust 了,你去看看
|
|
WangTaiyangAug 12
34
可以看一下,已经可以用了
https://github.com/guangdawang/wgcDB |
|
abbycinAug 12 via Android
35
我写了两个 kv 都是用的 rust
|
|
pannicAug 12
36
人写还不是人写
|
|
zouzanyanAug 13
38
写个玩具项目,你用 python 都行
|
|
airqjAug 13
40
|
|
41
有区别,感觉用 ai 写 rust 比写 go 更爽,不知道是不是错觉。
|
|
vultrAug 13
42
你把开源的工具做得比我定制的还要好,对我好像有点不公平哦。
|
|
44
已经实现:SQL 解析 → 名称解析/类型检查 → 逻辑计划 → 物理计划 → 执行 → 持久化
|