详细说明在这里:
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
fiveStarLaoliang 13h 10m ago 选 go ,AI 时代,最好选一门程序员友好型。写代码不用你写了,审代码还得你自己申,选一门对自己友好的语言,别折腾自己。
|
2
bunai 13h 9m ago 推荐你用 rust
要是我就选择 go ,rust 说实话是真看不懂 |
3
laizenan 13h 4m ago talk is cheap ,让 AI 写 2 个 demo 对比 benchmark 一下呢?
|
4
zsj1029 13h 2m ago 数据库这种高并发低延迟的明显是 rust 更合适,含 gc 的都要排除
|
5
liuliuliuliu 13h 2m ago |
6
redbule 13h 0m ago C# 其实最好,项目初期有 gc 可以快速迭代,中后期又可以用各种特性优化性能。
性能上限无限接近无 gc 的语言。 |
7
kurthumburgmtz97 12h 59m ago 换个名吧,谷歌搜索 xdb 一大堆同名的项目,不利于推广
|
8
yingha 12h 52m ago 执行引擎用 go ,存储引擎 rust 。好奇存储引擎你打算怎么设计? LSM 吗?
|
9
sskycn OP @kurthumburgmtz97 好的,马上改名。
|
10
sskycn OP XDB 改为 NetbaDB 了,gpt 帮忙改的。
|
11
noogler67 12h 28m ago 有性能要求的肯定是 rust ,不然后期优化 gc 延迟,得多麻烦。
|
12
bunai 12h 15m ago
|
14
icecreamxuegao 11h 46m ago via Android
@sskycn 网吧 DB ?
|
15
fgwmlhdkkkw 11h 13m ago via Android
go 没有装饰器,,,我建议用 rust 。
|
17
artiga033 11h 0m ago via Android 没用过 rust 那我不建议一上来就写数据库这种,rust 性能高的前提是你有正确的心智模型,否则起反效果。go 则是随便来个阿猫阿狗写出来的性能都不至于烂到家。
而且你做这种框架大概率要写宏,rust 的宏哪怕在你完全掌握语言本身之后,写起来都是挺困难的。 |
18
cabing 10h 58m ago 自己玩。就用 go 呗。
|
19
loading 10h 56m ago 练手 Go ,生产 Rust
Go 有 gc ,数据库怎么能让你周期性地卡一下。 |
20
snxq1995 10h 53m ago
不考虑其他语言吗,我最近在了解 zig ,感觉还不错。rust 入门失败 N 次了。go 不适合写数据库,原因同意上面的老哥,有 gc 的语言都不合适。
|
21
ninjaJ 10h 19m ago 真正的关键点在于,rust 的语言特性把很多 bug 杀死在了编程之前,用 AI 写 rust 能让你的程序健壮很多。即使你不去看代码,编译器和自动化测试已经能找出很多 bug 了。
|
22
cndns 10h 18m ago
V2DB
|
23
qxmqh 10h 13m ago
不如起名 NBDB 。牛逼 DB
|
24
YanSeven 10h 11m ago
有请 TiDB 的大佬分享经验。
|
25
ytFG 8h 51m ago
rustDB 或者 goDB
|
26
sqlman 8h 15m ago
用 python (狗头)
|
27
shylockhg 8h 15m ago
好奇为啥准备做这玩意
|
28
zengxs 8h 9m ago
除了 rust/go 还有个老登语言可以选择:c++
|
29
sskycn OP 已经开干了,最终决定用 rust 。
|
31
bootvue 6h 22m ago
都是渣渣 用 c++吧
|
32
ktyang 6h 19m ago
爷青回 感觉好久没看到这种帖子了
|
33
yfixx 5h 55m ago via Android
有个 pgrust 了,你去看看
|
34
WangTaiyang 5h 53m ago
可以看一下,已经可以用了
https://github.com/guangdawang/wgcDB |
35
abbycin 5h 14m ago via Android
我写了两个 kv 都是用的 rust
|
36
pannic 5h 13m ago
人写还不是人写
|