GitLab是一款在全球范围内都非常流行的源代码管理工具,早期的版本当中用户可以选择使用MySQL或PostgreSQL两种数据库,但是从12.1.0版本开始官方就完全放弃了对MySQL的支持。
GitLab新版本中很多功能都基于PostgreSQL的特性开发,它是众多使用了PostgreSQL作为底层数据存储的标杆产品。
我们试想一下这种用户场景,某大型集团分为众多事业部,每个事业部甚至小团队可能都维护了自己的GitLab,从集团层面如何管理这些仓库就成了棘手的问题。比如:
如果能有一套统一的GitLab环境,同时又具备良好的可扩展性和高可用性,那无疑是最好的解决方案。但是传统单机PostgreSQL数据库并不能满足以上需求,那能否考虑把GitLab跑在分布式数据库上?
在之前的文章中,我们已经对比了GitLab在CockroachDB和YugabyteDB上的兼容性表现,详情可看:
GitLab在CockroachDB和YugabyteDB上的兼容性对比(一)-系统初始化
GitLab在CockroachDB和YugabyteDB上的兼容性对比(二)-读写场景测试
以上两种兼容PG协议的分布式数据库测试结果为YugabyteDB上兼容性更好,而国产分布式数据库TiDB的社区项目TiDB For PostgreSQL也已经兼容了大部分GitLab功能,参考资料:
在本文中,我们将选取一部分YugabyteDB和TiDB For PostgreSQL上的GitLab核心场景做一下兼容性以及性能对比,给GitLab运行在分布式数据库上提供更多参考价值。







(99%响应时间趋势对比,越高表示时间越长)
结果分析:


(99%响应时间趋势对比,越高表示时间越长)
结果分析:


(99%响应时间趋势对比,越高表示时间越长)
结果分析:


(99%响应时间趋势对比,越高表示时间越长)
结果分析:


(99%响应时间趋势对比,越高表示时间越长)
结果分析:


(99%响应时间趋势对比,越高表示时间越长)
结果分析:并发量对两边的影响都不大,响应时间和吞吐量都很平稳,两者性能几乎无差别。


(99%响应时间趋势对比,越高表示时间越长)
结果分析:
在并发量比较小的时候TiDB For PostgreSQL性能比YugabyteDB明显要好一些,并发加大后两边错误率都快速上升。

结果分析:
在本次测试结果中,大部分场景里GitLab运行在YugabyteDB上要比TiDB For PostgreSQL性能稍好一些,一定程度上能作为这两种数据库的性能参考,同时在兼容性上TiDB For PostgreSQL还有不支持的功能。
但是有一些原因可能也会影响了测试结果,包括两边的铺底数据有差异、仓库大小差异等,因为在以上测试场景中不仅仅涉及数据库读写,还有很大一部分的文件操作。
另一方面,从两者的底层架构来看,YugabyteDB的计算和存储层都在TServer节点中,对比TiDB For PostgreSQL的部署结构相当于至少少了2次网络请求,这也是影响压测结果的因素之一。
TiDB For PostgreSQL还在持续完善当中,这一份测试结果也能在产品开发上提供指导方向~
如有其他疑问,欢迎一起交流一下哦!
版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。
公众号搜索神州数码云基地,后台回复TiDB,加入TiDB技术交流群。