TiDB Weekly|This Week on TiDB 20210815

原文链接

欢迎来到新一期的 This Week on TiDB 栏目!TiDB 是一个开源的 MySQL 协议兼容的分布式数据库,支持 HTAP 即混合事务和分析处理。这个栏目是 TiDB 开发进展和社区新闻的非官方周刊窗口,如果你想将自己看到或者正在做的工作也通过这个窗口发布,欢迎私信联系我或者在 weekly 仓库中提出。如果你有意了解或加入 TiDB 社区,TiDB 社区也非常欢迎贡献者。

*: Integrate SkyWalking-eyes to check license headers in CI and fix licenses headers

Apache SkyWalking 的 Committer @fgksgf 在 TiDB 社区里追踪代码 review 的时候,发现 TiDB 缺少对相关文件 Apache License 的 license header 的检测,从而导致经常需要 reviewer 提醒添加或者在某些主仓库的文件缺少 license header 的情况。他借鉴 Apache SkyWalking 社区的经验,提出了利用 SkyWalking-eyes 工具来自动检测和提示 license header 的方案。

目前 pull request 已经基本调试完毕,希望在下周可以合进主干,否则开发中的其他 PR 不合规却缺乏检查,容易导致本 PR 不断的 catch up 新的修改。

Write and run unit tests

TiDB Dev Guide 关于编写和运行单元测试的篇章在上周已经发布了,感谢 @dveeden @xxchan @HuGanghui 的帮助。

这一篇章介绍了在 testify 测试框架下,TiDB 的单元测试是如何编写和组织的,对常见的模式做了说明和举例。同时,介绍了运行单个测试,运行所有测试和调试 pull request 的测试的方式。由于 TiDB 采用了 pingcap/failpoint 库做埋点和测试钩子,所以运行调试过程和基础的 Golang 测试有所出入。最后,针对常见的测试失败情况做了说明和举例。

util/ranger: test data is setup/teardown logic

上面讲到的文章对于 TestKit 只介绍了其存在,没有详细展开,或许在后续 Dev Guide 发展的过程中可以容纳更多的内容。这个 PR 就是测试迁移工作进行到下一阶段后涉及 TiDB 的 TestData 测试工具的修改。TestData 用于 SQL 测试从输入生成输出,进行回归测试避免 SQL 行为发生意料之外的改变。感兴趣的同学可以关注。

Privilege

回到 TiDB Dev Guide 来,Understanding TiDB 篇章终于开张了第一个章节。资深开发者 @morgo 撰文介绍了他主力开发的权限管理模块,对权限管理的整体设计,代码中的典型模式,以及增强权限管理的提案和落地过程都做了介绍。如果你关注 TiDB 数据库当中的权限管理主题,这篇文章不得不看。

值得一提的是,TiDB Dev Guide 的 Understanding TiDB 篇章目录做了调整。按照不同语句的横向代码逻辑,以及不同模块的纵向代码逻辑,分成了 DDL / DML / DQL 三种语句,Parser / Planner / Execution 三个流程模块,和 Transaction / Session / Privilege / Plugin 等多个功能模块。

pingcap/tidb-dev-guide

如果你是数据库专家,欢迎对这个目录提出自己的意见或者参与编写其中的章节。只要你是读者,都欢迎你提出 issue 来聊一聊你对某个主题的看法或者希望在某个主题下看到的内容,也欢迎 review 尚未合并的 pull requests

Improve ORM Compatibility

TiDB 在 ORM 的集成上做了一系列的努力。

  • Active Record 的集成已经由 @hooopo 完成,并提供了相应的样例。

  • Hibernate 的集成由 @bb7133 跟进,目前正在和 Hibernate 团队进行测试。

  • SQLAlchemy 和 Django 的集成由 @hawkingrei 跟进,目前已经有可以试用的 demo 版本,欢迎参与测试。

TiKV X JuiceFS On The Go

JuiceFS 正在尝试将 TiKV 作为自己的元数据存储后端。在项目的核心成员 @SandyX 给出了一系列初步对 TiKV 进行性能测试的数据后,TiKV 的维护者之一 @BusyJay 介绍了 TiKV 在新版本上针对性能的优化努力。内容我没有细看,就不做介绍了,主要是 Raft Store 上针对 IO 的优化。

Article on how to contribute to TiKV Coprocessor

TiKV 的 Reviewer @xuanwo 发布了一篇关于如何贡献 TiKV Coprocessor 的文章。文章图文并茂,对 Coprocessor 的设计和实现做了详细的介绍,同时还讨论了社区贡献的意义和手段,非常值得一读。

6赞