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

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

  •  
  •   gfwuzer · Nov 6, 2025 · 5206 views
    This topic created in 365 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
    YanSeven
    Nov 6, 2025
    1
    有参考 TiKV 吗
    YanSeven
    YanSeven
    Nov 6, 2025
    2
    @YanSeven 哦忘了,TiKV 不是 go 写的
    JimLee0921
    JimLee0921
    Nov 6, 2025
    3
    好叼,等我 Go 入门完必须得支持一波

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

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

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

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

    #!/bin/bash

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

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

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

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