在我进入一家初创的数据库企业实习并深入参与内核开发后,我对数据库方向产生了浓厚的兴趣,开始尝试实现一些数据库功能。为了进一步提升,我寻找了一些开源项目进行练习,其中 PingCAP 的 TinySQL 便是其中之一。但在实际操作过程中,我对这个项目的评价却颇有保留(有些拉跨了)。
✅TinySQL 的优势
- 架构清晰:TinySQL 的整体架构模仿 TiDB,可以直接参考 TiDB 的源码来实现和优化 TinySQL。如果你想在开源社区给 TiDB 做贡献,或许这是一个不错的开始。
- 使用了 Go 作为开发语言:相比于 C++ 和 Rust,Go 更为简单易学,轻松上手,有效减轻了我的心智负担。
- 实现难度不大:这个项目的风格属于挖空填空,每个 Project 只需要实现几个关键函数就行。
❗️TinySQL 的不足之处
- 资料稀缺,社区不活跃:由于项目维护已久未更新,网上的学习资料非常有限,社区讨论也不活跃,遇到问题时难以找到有效的解决方案。TinySQL 提供的 Github Classroom 教学平台无法正常使用,到现在似乎也没有修好。
目前似乎只有两到三篇实现 TinySQL 的教程,其中一个作者似乎也半途而废了。
- 文档简陋且与实际实现脱节:TinySQL 的文档过于简略,很多关键部分并没有详细说明,甚至与实际的实现方式严重脱节。在实现功能时,往往需要大量阅读源码才能搞明白具体逻辑,极大增加了学习成本。
🔥不推荐 TinySQL 作为入门项目
如果你是一名正在学习数据库的新手,还没有太多项目经验或工程实践,那么面对这样一个项目,我认为并不是一个理想的选择。TinySQL 是一个的确很有潜力成长成帮助大家进入数据库内核开发的教学项目,但是由于上文提到的原因,很容易让你陷入困境。如果你对 SQL 层确实感兴趣,可以选择一些更友好、更具指导性的替代项目,比如 SQLite 或 DuckDB,这些项目文档详实、社区活跃,非常适合入门学习。