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

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

  •  2
     
  •   sskycn ·
    sskycn · 1 day ago · 3893 views

    详细说明在这里:

    https://github.com/sskycn/xdb

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

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

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

    dsl 现在是用 go 实现的。

    Supplement 1  ·  1 day ago

    我原来的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  ·  1 day ago

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

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

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

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

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

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