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

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

  •  
  •   sskycn ·
    sskycn · 16h 53m ago · 3053 views

    详细说明在这里:

    https://github.com/sskycn/xdb

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

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

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

    dsl 现在是用 go 实现的。

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

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

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

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

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

    Go 有 gc ,数据库怎么能让你周期性地卡一下。
    snxq1995
        20
    snxq1995  
       14h 27m ago
    不考虑其他语言吗,我最近在了解 zig ,感觉还不错。rust 入门失败 N 次了。go 不适合写数据库,原因同意上面的老哥,有 gc 的语言都不合适。
    ninjaJ
        21
    ninjaJ  
       13h 53m ago   ❤️ 1
    真正的关键点在于,rust 的语言特性把很多 bug 杀死在了编程之前,用 AI 写 rust 能让你的程序健壮很多。即使你不去看代码,编译器和自动化测试已经能找出很多 bug 了。
    cndns
        22
    cndns  
       13h 52m ago
    V2DB
    qxmqh
        23
    qxmqh  
       13h 47m ago
    不如起名 NBDB 。牛逼 DB
    YanSeven
        24
    YanSeven  
       13h 45m ago
    有请 TiDB 的大佬分享经验。
    ytFG
        25
    ytFG  
       12h 26m ago
    rustDB 或者 goDB
    sqlman
        26
    sqlman  
       11h 50m ago
    用 python (狗头)
    shylockhg
        27
    shylockhg  
       11h 49m ago
    好奇为啥准备做这玩意
    zengxs
        28
    zengxs  
       11h 43m ago
    除了 rust/go 还有个老登语言可以选择:c++
    sskycn
        29
    sskycn  
    OP
       10h 11m ago
    已经开干了,最终决定用 rust 。
    vultr
        30
    vultr  
       10h 0m ago
    @sskycn 终于知道你为什么要自己买 pro 了,其实用公司的 pro 我也不会说你的。
    bootvue
        31
    bootvue  
       9h 57m ago
    都是渣渣 用 c++吧
    ktyang
        32
    ktyang  
       9h 53m ago
    爷青回 感觉好久没看到这种帖子了
    yfixx
        33
    yfixx  
       9h 29m ago via Android
    有个 pgrust 了,你去看看
    WangTaiyang
        34
    WangTaiyang  
       9h 27m ago
    可以看一下,已经可以用了
    https://github.com/guangdawang/wgcDB
    abbycin
        35
    abbycin  
       8h 48m ago via Android
    我写了两个 kv 都是用的 rust
    pannic
        36
    pannic  
       8h 48m ago
    人写还不是人写
    Oysmart
        37
    Oysmart  
       6h 12m ago
    @bunai 这个 NB 了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   975 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 19:47 · PVG 03:47 · LAX 12:47 · JFK 15:47
    ♥ Do have faith in what you're doing.