• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sskycn
V2EX  ›  程序员

我准备写一个强类型关系型数据库,是应该用 go 还是 rust?

  •  2
     
  •   sskycn ·
    sskycn · Aug 12 · 4890 views

    详细说明在这里:

    https://github.com/sskycn/xdb

    go 语言我用了多年,很熟悉,rust 没用过,但在我的感觉里,这个项目应该用 rust.

    大家帮我分析分析,应该用什么好。

    为什么想写一个强类型数据库,是因为优化自己的 dsl ,优化到了一定程度后,感觉很接近数据库的实现了。

    dsl 现在是用 go 实现的。

    Supplement 1  ·  Aug 12

    我原来的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
    }
    
    Supplement 2  ·  Aug 12

    已经确定用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/
    
    45 replies    2026-08-13 21:16:21 +08:00
    fiveStarLaoliang
        1
    fiveStarLaoliang  
       Aug 12   ❤️ 1
    选 go ,AI 时代,最好选一门程序员友好型。写代码不用你写了,审代码还得你自己申,选一门对自己友好的语言,别折腾自己。
    bunai
        2
    bunai  
       Aug 12   ❤️ 1
    推荐你用 rust
    要是我就选择 go ,rust 说实话是真看不懂
    laizenan
        3
    laizenan  
       Aug 12   ❤️ 1
    talk is cheap ,让 AI 写 2 个 demo 对比 benchmark 一下呢?
    zsj1029
        4
    zsj1029  
       Aug 12   ❤️ 1
    数据库这种高并发低延迟的明显是 rust 更合适,含 gc 的都要排除
    liuliuliuliu
        5
    liuliuliuliu  
       Aug 12   ❤️ 5
    redbule
        6
    redbule  
       Aug 12   ❤️ 5
    C# 其实最好,项目初期有 gc 可以快速迭代,中后期又可以用各种特性优化性能。

    性能上限无限接近无 gc 的语言。
    kurthumburgmtz97
        7
    kurthumburgmtz97  
       Aug 12   ❤️ 1
    换个名吧,谷歌搜索 xdb 一大堆同名的项目,不利于推广
    yingha
        8
    yingha  
       Aug 12   ❤️ 1
    执行引擎用 go ,存储引擎 rust 。好奇存储引擎你打算怎么设计? LSM 吗?
    sskycn
        9
    sskycn  
    OP
       Aug 12
    @kurthumburgmtz97 好的,马上改名。
    sskycn
        10
    sskycn  
    OP
       Aug 12
    XDB 改为 NetbaDB 了,gpt 帮忙改的。
    noogler67
        11
    noogler67  
       Aug 12   ❤️ 1
    有性能要求的肯定是 rust ,不然后期优化 gc 延迟,得多麻烦。
    bunai
        12
    bunai  
       Aug 12
    有别人已经弄了

    https://github.com/t8y2/dbx
    antipro
        13
    antipro  
       Aug 12 via Android
    @bunai 这是客户端
    icecreamxuegao
        14
    icecreamxuegao  
       Aug 12 via Android
    @sskycn 网吧 DB ?
    fgwmlhdkkkw
        15
    fgwmlhdkkkw  
       Aug 12 via Android
    go 没有装饰器,,,我建议用 rust 。
    vultr
        16
    vultr  
       Aug 12
    NetbaDB -> net bad db

    @sskycn 你把 gpt 搞得这么有口味了?
    artiga033
        17
    artiga033  
       Aug 12 via Android   ❤️ 1
    没用过 rust 那我不建议一上来就写数据库这种,rust 性能高的前提是你有正确的心智模型,否则起反效果。go 则是随便来个阿猫阿狗写出来的性能都不至于烂到家。

    而且你做这种框架大概率要写宏,rust 的宏哪怕在你完全掌握语言本身之后,写起来都是挺困难的。
    cabing
        18
    cabing  
       Aug 12   ❤️ 1
    自己玩。就用 go 呗。
    loading
        19
    loading  
       Aug 12   ❤️ 1
    练手 Go ,生产 Rust

    Go 有 gc ,数据库怎么能让你周期性地卡一下。
    snxq1995
        20
    snxq1995  
       Aug 12
    不考虑其他语言吗,我最近在了解 zig ,感觉还不错。rust 入门失败 N 次了。go 不适合写数据库,原因同意上面的老哥,有 gc 的语言都不合适。
    ninjaJ
        21
    ninjaJ  
       Aug 12   ❤️ 1
    真正的关键点在于,rust 的语言特性把很多 bug 杀死在了编程之前,用 AI 写 rust 能让你的程序健壮很多。即使你不去看代码,编译器和自动化测试已经能找出很多 bug 了。
    cndns
        22
    cndns  
       Aug 12
    V2DB
    qxmqh
        23
    qxmqh  
       Aug 12
    不如起名 NBDB 。牛逼 DB
    YanSeven
        24
    YanSeven  
       Aug 12
    有请 TiDB 的大佬分享经验。
    ytFG
        25
    ytFG  
       Aug 12
    rustDB 或者 goDB
    sqlman
        26
    sqlman  
       Aug 12
    用 python (狗头)
    shylockhg
        27
    shylockhg  
       Aug 12
    好奇为啥准备做这玩意
    zengxs
        28
    zengxs  
       Aug 12
    除了 rust/go 还有个老登语言可以选择:c++
    sskycn
        29
    sskycn  
    OP
       Aug 12
    已经开干了,最终决定用 rust 。
    vultr
        30
    vultr  
       Aug 12
    @sskycn 终于知道你为什么要自己买 pro 了,其实用公司的 pro 我也不会说你的。
    bootvue
        31
    bootvue  
       Aug 12
    都是渣渣 用 c++吧
    ktyang
        32
    ktyang  
       Aug 12
    爷青回 感觉好久没看到这种帖子了
    yfixx
        33
    yfixx  
       Aug 12 via Android
    有个 pgrust 了,你去看看
    WangTaiyang
        34
    WangTaiyang  
       Aug 12
    可以看一下,已经可以用了
    https://github.com/guangdawang/wgcDB
    abbycin
        35
    abbycin  
       Aug 12 via Android
    我写了两个 kv 都是用的 rust
    pannic
        36
    pannic  
       Aug 12
    人写还不是人写
    Oysmart
        37
    Oysmart  
       Aug 12
    @bunai 这个 NB 了。
    zouzanyan
        38
    zouzanyan  
       Aug 13
    写个玩具项目,你用 python 都行
    sskycn
        39
    sskycn  
    OP
       Aug 13
    @zouzanyan 您可以点进去看看我是不是写着玩的。
    airqj
        40
    airqj  
       Aug 13
    都是 AI 来写,反正你又不看源码。go 还是 rust 有区别吗
    sskycn
        41
    sskycn  
    OP
       Aug 13
    有区别,感觉用 ai 写 rust 比写 go 更爽,不知道是不是错觉。
    vultr
        42
    vultr  
       Aug 13
    你把开源的工具做得比我定制的还要好,对我好像有点不公平哦。
    sskycn
        43
    sskycn  
    OP
       Aug 13 via Android
    @vultr 老大,你同意了我才开始的。
    sskycn
        44
    sskycn  
    OP
       Aug 13
    已经实现:SQL 解析 → 名称解析/类型检查 → 逻辑计划 → 物理计划 → 执行 → 持久化
    vultr
        45
    vultr  
       Aug 13
    @sskycn 你不会计划未来把客户的业务都换到这个数据库吧?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   967 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 22:57 · PVG 06:57 · LAX 15:57 · JFK 18:57
    ♥ Do have faith in what you're doing.