V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gfwuzer
V2EX  ›  程序员

我在写一本书:《从零开始手搓数据库(Go)》

  •  
  •   gfwuzer · Nov 6, 2025 · 4271 views
    This topic created in 175 days ago, the information mentioned may be changed or developed.

    还没有完成。大家可以看看,应该能看懂吧?

    https://systems-programming.org/database_zh/

    36 replies    2025-11-10 16:15:23 +08:00
    YanSeven
        1
    YanSeven  
       Nov 6, 2025
    有参考 TiKV 吗
    YanSeven
        2
    YanSeven  
       Nov 6, 2025
    @YanSeven 哦忘了,TiKV 不是 go 写的
    JimLee0921
        3
    JimLee0921  
       Nov 6, 2025
    好叼,等我 Go 入门完必须得支持一波

    另外哥们儿能给点建议吗?就是目前自己跟着 GPT+GitHub 已经把基础语法什么都学完了,这两天上班是在偷偷学那些重要的官方库和跟着那个 geektutu 看他那个啥高性能编程,准备学完再跟着他弄他那个什么七天 gin 框架。。但是整体方向还是挺乱的。。
    lingrongyan
        4
    lingrongyan  
       Nov 6, 2025
    围观下,虽然不懂,但从零开始打动我了
    gongym
        5
    gongym  
       Nov 6, 2025
    我能分享下自己写的数据库吗,也是从头编写的

    https://github.com/ggymm/db
    javalaw2010
        6
    javalaw2010  
       Nov 6, 2025
    🐂🍺,写好了踢我一下,出实体书的话我一定买一本拜读。
    gfwuzer
        7
    gfwuzer  
    OP
       Nov 6, 2025
    @JimLee0921 根据本人经验,入门后最要紧的是动手积累经验,然后是学习基础知识。这 2 个方向在时间上最有性价比。
    craftsmanship
        8
    craftsmanship  
       Nov 6, 2025 via Android
    @gfwuzer 基础知识指的什么呢
    back0893
        9
    back0893  
       Nov 6, 2025
    让我想起 lua 的 go 实现 手措解析
    craftsmanship
        10
    craftsmanship  
       Nov 6, 2025 via Android
    @gfwuzer 懂了 链接里提到的底层原理哈
    gfwuzer
        11
    gfwuzer  
    OP
       Nov 6, 2025
    @javalaw2010 不介意英文的话,可以看这个 https://build-your-own.org/#section-database
    JimLee0921
        12
    JimLee0921  
       Nov 6, 2025
    @gfwuzer #7 学到了学到了,谢谢
    AutumnVerse
        13
    AutumnVerse  
       Nov 6, 2025 via iPhone
    数据库这种要求高实时性的业务,就不应该选带 gc 的编程语言,最新选 rust ,不追新选 c c++

    选 go 注定只能是玩具
    nbhaohao
        14
    nbhaohao  
       Nov 6, 2025
    看上去不错, 谢谢分享.
    gfwuzer
        15
    gfwuzer  
    OP
       Nov 6, 2025
    @AutumnVerse 你说的对。C/C++ 确实不可不学习。大家可以看看这个手搓 Redis 的教程,比数据库简单些。https://build-your-own.org/redis/
    hugodotlau
        16
    hugodotlau  
       Nov 6, 2025
    万物皆可搓系列
    cc11
        17
    cc11  
       Nov 6, 2025
    看上去不错, 谢谢分享.
    dishonest
        18
    dishonest  
       Nov 6, 2025
    @AutumnVerse 玩具也很有价值,娱乐价值、教育价值。go 的好处就是语法糖少,适合看清思路。

    我记得以前有本叫`Writing An Interpreter In Go`, 我当时特别喜欢这本书,因为相比那些大块头,它是真的“从零开始”。
    lysShub
        19
    lysShub  
       Nov 6, 2025
    @AutumnVerse 不少日志数据库都是 go 写的
    Chrisz2zz
        20
    Chrisz2zz  
       Nov 7, 2025
    支持!
    258
        21
    258  
       Nov 7, 2025
    这个网站的样式挺好看的
    runningman
        22
    runningman  
       Nov 7, 2025
    放个微信或者群么
    encounter2017
        23
    encounter2017  
       Nov 7, 2025
    我来,10 行内手搓数据库( bash )

    #!/bin/bash

    db_set () {
    echo "$1, $2" >> database
    }

    db_get () {
    grep "^$1," database | sed -e "s/^$1,//" | tail -n 1
    }
    dog82
        24
    dog82  
       Nov 7, 2025
    TiDB 好像是用 Go 写的,楼主可以去应聘
    dog82
        25
    dog82  
       Nov 7, 2025
    再好奇问一下:sql 语言解析到底层数据存储结构,要有编译原理的知识积累才行,感觉非常复杂,OP 怎么解决的?
    dddddds
        26
    dddddds  
       Nov 7, 2025
    我用 rust 写了一个,只不过是付费的,介意勿点 https://roseduan.cn/course/zh/blog/2-sql/
    yuananf
        27
    yuananf  
       Nov 7, 2025
    @dog82 sql 解析到语法树应该还好,tidb 的语法解析还可以 https://github.com/pingcap/tidb/tree/master/pkg/parser
    jmliubiao
        28
    jmliubiao  
       Nov 7, 2025
    支持
    l1ch40
        29
    l1ch40  
       Nov 7, 2025
    可以哇,支持楼主
    kevinpendragon
        30
    kevinpendragon  
       Nov 7, 2025
    可以,感觉写的挺通俗
    gfwuzer
        31
    gfwuzer  
    OP
       Nov 7, 2025
    @dog82 你可以看看相关章节,自己动手实践。parser 并没有那么复杂,也不需要那些编译原理的理论。实践有时比理论简单。
    abolast
        32
    abolast  
       Nov 7, 2025
    到时候会上架微信读书么?期待
    fpure
        33
    fpure  
       Nov 7, 2025
    有关于执行计划优化的内容吗
    lvlongxiang199
        34
    lvlongxiang199  
       Nov 7, 2025
    建议改名为 CRUD 程序员视角下的 db (非贬义)

    存储+事务的确是重点, 但优化器, 执行器也是重点. 真要正经学下 db 的话, 可以直接上 cmu15445

    parser 那边没必要手写, 可以直接用 yacc/ANTLR
    Dganzh
        35
    Dganzh  
       Nov 8, 2025
    写完再看
    zand1984
        36
    zand1984  
       Nov 10, 2025
    很棒,感谢推荐
    @gfwuzer #11
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2723 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 132ms · UTC 03:04 · PVG 11:04 · LAX 20:04 · JFK 23:04
    ♥ Do have faith in what you're doing.