> For the complete documentation index, see [llms.txt](https://shiratakes-o.gitbook.io/shiratakes-o/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shiratakes-o.gitbook.io/shiratakes-o/guan-yu-shu-ju-ku-he-da-shu-ju-de-za-tan/shu-ju-ku-xue-xi-xiang-mu-ce-ping-tinysql-shi-fou-zhi-de-tui-jian.md).

# 数据库学习项目测评：TinySQL 是否值得推荐？

🚩 **数据库学习项目红黑榜：TinySQL 评测**

在我进入一家初创的数据库企业实习并深入参与内核开发后，我对 **数据库方向** 产生了浓厚的兴趣，开始尝试实现一些数据库功能。为了进一步提升，我寻找了一些开源项目进行练习，其中 **PingCAP 的 TinySQL** 便是其中之一。但在实际操作过程中，我对这个项目的评价却颇有保留。

**✅ TinySQL 的优势**

* **架构清晰**：TinySQL 的整体架构模仿 TiDB，可以直接参考 TiDB 的源码来实现和优化TinySQL。如果你想在开源社区给TiDB做贡献，或许这是一个不错的开始。
* **使用了Go作为开发语言**：相比于C++和Rust，Go可谓是简单易学，轻松上手，有效减轻了我的心智负担。
* **实现难度不大**：这个项目的风格属于挖空填空，每个Project只需要实现几个关键函数就行。

**❗️ TinySQL 的不足之处**

1. **资料稀缺，社区不活跃**\
   由于项目维护已**久未更新**，网上的学习资料非常**有限**，社区讨论也不活跃，遇到问题时难以找到有效的解决方案。TinySQL 提供的Github Classroom 教学平台无法正常使用，到现在似乎也没有修好。
2. **文档简陋且与实际实现脱节**\
   TinySQL 的文档过于简略，很多关键部分并没有详细说明，甚至与实际的实现方式 **严重脱节**。在实现功能时，往往需要 **大量阅读源码** 才能搞明白具体逻辑，极大增加了学习成本。

**🔥 不推荐 TinySQL 作为入门项目**

如果你是一名正在学习数据库的新手，还没有太多项目经验或工程实践，那么面对这样一个项目，我认为并不是一个理想的选择。**TinySQL** 是一个的确很有潜力成长成帮助大家进入数据库内核开发的教学项目，但是由于上文提到的原因，很容易让你陷入困境。如果你对 **SQL 层** 确实感兴趣，可以选择一些 **更友好、更具指导性** 的替代项目，比如 **SQLite** 或 **DuckDB**，这些项目文档详实、社区活跃，非常适合入门学习。
