• GitLab在YugabyteDB和TiDB For PostgreSQL上的兼容性对比



    测试背景

    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功能,参考资料:

    TiDB For PostgreSQL之兼容GitLab

    在本文中,我们将选取一部分YugabyteDB和TiDB For PostgreSQL上的GitLab核心场景做一下兼容性以及性能对比,给GitLab运行在分布式数据库上提供更多参考价值。


    测试环境

    1、GitLab

    在这里插入图片描述

    2、YugabyteDB

    在这里插入图片描述

    3、TiDB For PostgreSQL

    在这里插入图片描述

    4、Jmeter

    在这里插入图片描述

    测试场景

    在这里插入图片描述

    • 针对每一个读场景,我们会压测4种不同的并发级别,分别是10、20、50、100,持续运行5分钟。
    • 针对每一个写场景,会在前面4种并发级别的前提下分别测试1千个样本数据。

    测试结果

    1、Project List

    在这里插入图片描述
    在这里插入图片描述

    (99%响应时间趋势对比,越高表示时间越长)

    结果分析:

    • TiDB For PostgreSQL这边随着并发量增加响应时间明显变大,但是吞吐量无法提升,10并发是本次测试的最好性能。
    • YugabyteDB也体现出相同的情况,并且错误率逐步上升。
    • 这个场景下GitLab运行在TiDB For PostgreSQL性能和稳定性稍微好一点。

    2、Project View

    在这里插入图片描述
    在这里插入图片描述

    (99%响应时间趋势对比,越高表示时间越长)

    结果分析:

    • TiDB For PostgreSQL还是在10并发压力下表现出最佳性能。
    • YugabyteDB也体现出相同的情况,但是响应时间要稍小一点,吞吐量更大,这个差距比较稳定。
    • 这个场景下GitLab运行在YugabyteDB上性能更好。

    3、Branch List

    在这里插入图片描述

    在这里插入图片描述

    (99%响应时间趋势对比,越高表示时间越长)

    结果分析:

    • TiDB For PostgreSQL同样在10并发时有最佳性能。
    • YugabyteDB整体趋势一致,但是响应时间和吞吐量明显要优于TiDB4PG。
    • 这个场景下GitLab运行在YugabyteDB上性能更好。

    4、Issue List

    在这里插入图片描述
    在这里插入图片描述

    (99%响应时间趋势对比,越高表示时间越长)

    结果分析:

    • 和上一场景类似,在这个场景中GitLab运行在YugabyteDB上性能更好,不过差距并不明显。

    5、Merge Request List

    在这里插入图片描述

    在这里插入图片描述

    (99%响应时间趋势对比,越高表示时间越长)

    结果分析:

    • 两边趋势一致,YugabyteDB测试结果要优于TiDB4PG,差距不是很大。

    6、New Commit

    在这里插入图片描述
    在这里插入图片描述

    (99%响应时间趋势对比,越高表示时间越长)

    结果分析:并发量对两边的影响都不大,响应时间和吞吐量都很平稳,两者性能几乎无差别。

    7、Create Branch

    在这里插入图片描述
    在这里插入图片描述

    (99%响应时间趋势对比,越高表示时间越长)

    结果分析:

    在并发量比较小的时候TiDB For PostgreSQL性能比YugabyteDB明显要好一些,并发加大后两边错误率都快速上升。

    8、Create Issue

    在这里插入图片描述

    结果分析:

    • TiDB For PostgreSQL还无法支持创建Issue,错误率100%。
    • YugabyteDB可以创建Issue,但是在有并发情况下错误率也很高,响应时间很长。

    总结

    在本次测试结果中,大部分场景里GitLab运行在YugabyteDB上要比TiDB For PostgreSQL性能稍好一些,一定程度上能作为这两种数据库的性能参考,同时在兼容性上TiDB For PostgreSQL还有不支持的功能。

    但是有一些原因可能也会影响了测试结果,包括两边的铺底数据有差异、仓库大小差异等,因为在以上测试场景中不仅仅涉及数据库读写,还有很大一部分的文件操作。

    另一方面,从两者的底层架构来看,YugabyteDB的计算和存储层都在TServer节点中,对比TiDB For PostgreSQL的部署结构相当于至少少了2次网络请求,这也是影响压测结果的因素之一。

    TiDB For PostgreSQL还在持续完善当中,这一份测试结果也能在产品开发上提供指导方向~
    如有其他疑问,欢迎一起交流一下哦!

    版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。

    公众号搜索神州数码云基地,后台回复TiDB,加入TiDB技术交流群。

  • 相关阅读:
    Asp .Net Core 系列:Asp .Net Core 集成 NLog
    【21天Python进阶学习挑战赛】[day1]正则表达式大总结
    A-Level经济例题解析及练习Opportunity Cost
    web UI自动化介绍
    git 管理规范的思考
    小蚂蚁过河
    java毕业设计——基于java+JDBC+sqlserver的物业管理系统设计与实现(毕业论文+程序源码)——物业管理系统
    【Linux】线程概念
    浏览器交互:Cookies、事件、浏览历史
    【QML】QML性能优化 | 3D场景优化
  • 原文地址:https://blog.csdn.net/CBGCampus/article/details/125421698