我在写一本书:《从零开始手搓数据库(Go)》 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容 #Wrapper { background-color: #e2e2e2; background-image: url("/static/img/shadow_light.png"), url("//cdn.v2ex.com/assets/bgs/circuit.png"); background-repeat: repeat-x, repeat-x; } #Wrapper.Night { background-color: #1f2e3d; background-image: url("/static/img/shadow.png"), url("//cdn.v2ex.com/assets/bgs/circuit_night.png"); background-repeat: repeat-x, repeat-x; background-size: 20px 20px, 162.5px 162.5px; }
gfwuzer
V2EX    程序员

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

  •  
  •   gfwuzer 39 天前 3644 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    我记得以前有本叫`Writing An Interpreter In Go`, 我当时特别喜欢这本书,因为相比那些大块头,它是真的“从零开始”。
    lysShub
        19
    lysShub  
       39 天前
    @AutumnVerse 不少日志数据库都是 go 写的
    Chrisz2zz
        20
    Chrisz2zz  
       38 天前
    支持!
    258
        21
    258  
       38 天前
    这个网站的样式挺好看的
    runningman
        22
    runningman  
       38 天前
    放个微信或者群么
    encounter2017
        23
    encounter2017  
       38 天前
    我来,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  
       38 天前
    TiDB 好像是用 Go 写的,楼主可以去应聘
    dog82
        25
    dog82  
       38 天前
    再好奇问一下:sql 语言解析到底层数据存储结构,要有编译原理的知识积累才行,感觉非常复杂,OP 怎么解决的?
    dddddds
        26
    dddddds  
       38 天前
    我用 rust 写了一个,只不过是付费的,介意勿点 https://roseduan.cn/course/zh/blog/2-sql/
    yuananf
        27
    yuananf  
       38 天前
    @dog82 sql 解析到语法树应该还好,tidb 的语法解析还可以 https://github.com/pingcap/tidb/tree/master/pkg/parser
    jmliubiao
        28
    jmliubiao  
       38 天前
    支持
    l1ch40
        29
    l1ch40  
       38 天前
    可以哇,支持楼主
    kevinpendragon
        30
    kevinpendragon  
       38 天前
    可以,感觉写的挺通俗
    gfwuzer
        31
    gfwuzer  
    OP
       38 天前
    @dog82 你可以看看相关章节,自己动手实践。parser 并没有那么复杂,也不需要那些编译原理的理论。实践有时比理论简单。
    abolast
        32
    abolast  
       38 天前
    到时候会上架微信读书么?期待
    fpure
        33
    fpure  
       38 天前
    有关于执行计划优化的内容吗
    lvlongxiang199
        34
    lvlongxiang199  
       38 天前
    建议改名为 CRUD 程序员视角下的 db (非贬义)

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

    parser 那边没必要手写, 可以直接用 yacc/ANTLR
    Dganzh
        35
    Dganzh  
       37 天前
    写完再看
    zand1984
        36
    zand1984  
       35 天前
    很棒,感谢推荐
    @gfwuzer #11
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4114 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 00:15 PVG 08:15 LAX 16:15 JFK 19:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86