启动政务数字化建设的首要问题:“国产化数据库怎么选?”。实验室将这个任务交给了大数据团队。大数据团队发现关于不同国产数据库适用场景的资料在互联网上凤毛麟角,更多的是干瘪瘪的数据库排名。然而,均价十几万总价几十万的购买费用,不能简单拍拍脑袋看排名就能决定的。        既然我们找不到专业的评测报告,那就自己动手,来一次“非专业”的硬核国产数据库评测吧!

通过了对数据库综合信息收集,我们团队选定了四个耳熟能详的国产数据库,即达梦、人大金仓、南大通用、神州通用。同时设计了多个维度及指标,尽可能挖掘每个数据库产品的特性。在评测过程中,我们也在不断改进评测环境与方式,原本计划两周内完成,最终连肝一个月,原本一期可以搞定的内容,最终分为了三期。

在第一期中,我们进行了六个场景的测试比对:

  • 场景一:空库下数据插入效率对比

在不建索引且空数据的库中,持续插入数据,每次插入500条,插入到100万后截止。四个数据库对比如下:

从图表中可以看到,南大通用性能波动较大,去掉南大通用后如下:

达梦出现了接近一分钟的超长堵塞,达梦后:

综合以上图,在无索引100万数据插入场景中,人大金仓和神州通用表现较为稳定,达梦其次,南大通用的稳定性较差。耗时总时间如下:

达梦耗时最少,仅用了3分钟多,而最长的南大通用耗时接近12分钟。

  • 场景二:索引下的数据插入效率对比

在空库下,先为四个数据库的建好索引,再持续插入数据,每次插入5000条,插入到100万后截止。四数据库对比如下:

从上图中,南大通用同样是波动最大的,特别是在插入了120次即60万的数据后性能大幅下降。去掉南大通用后如下:

达梦依然存在间断性的超长堵塞,人大金仓与神州通用稳定性较好,执行的总时间如下:

从总时间上看,达梦和人大金仓耗时相差不大,而南大通用耗时超过了2小时。

  • 场景三:无索引下100万数据规模的查询

在无索引的环境中,对100万数据进行查询,共有6种查询脚本,分别以s1至s6表示。关于脚本的具体信息,请参考后文章节。每个脚本使用连续10次查询的平均值作为参考指标。比对结果如下:

从上图中可以看到达梦表现较为优秀,其次是人大金仓,当面对包含了join的s5、s6脚本时,南大通用性能出现了明显的下降。

  • 场景四:有索引下100万数据规模的查询

四个数据库均添加索引后,对100万级规模的数据进行查询,依然包含了s1至s6这6个脚本,每个脚本连续查询10次的平均值作为参考指标,比对结果如下:

图中可以直观看到,在s1没有走索引的情况下,达梦依然出现了明显的效率提升。而s2至s4包含了索引,四个数据库用时接近。但是到了s5和s6的时候,南大通用和神州通用就出现了大幅度性能降低。实际上,在我们测试中南大通用有较大机率出现长时间等待的问题,最长可以达到15s。这也是南大通用平均时长较大的原因之一。

以上四个场景是针对100万数据规模范围内,总的来说,不管是插入还是查询,有索引还是无索引,达梦都是四个数据库中性能最好,效率最高的。但是在100万数据以上的场景下如何呢?

  • 场景五:无索引下300万数据规模的插入

在无索引空表的情况下,每次5000持续插入数据,直到数量达到300万。四个数据库的插入时间对比如下:

取消稳定性较差的南大通用,剩余比对结果如下:

在这个场景中,达梦的稳定性较差。去掉后剩余数据库比对结果如下:

从稳定性上看,神州通用最为稳定,其次人大金仓。南大通用的稳定性较差。总时间统计如下:

从总时间上看,四个数据库的时间消耗相差不大。

  • 场景六:有索引下300万数据规模的插入

为四个数据库均添加同种类型的索引,持续插入数据,每次插入5000条,指导数据总量达到300万。四个数据库的时间对比为:

从图中可以看到,神州通用和南大通用的性能随着数据量的增加不断下降,神州通用出现性能下降的节点在120万左右,而南大通用在60万就开始了。但是神州通用性能下降幅度更大。去掉这两个数据库的对比如下:

在这个数量级中,人大金仓的稳定性高于达梦。四个数据库的总用时如下:

在这个数量级中,人大金仓总效率是优于达梦的。而南大通用与神州通用的效率较低,南大通用耗时约23小时,而神州通用耗时约32小时。

由于这较大的差距,因此我们停止了对南大通用及神州通用在有索引环境下更大数据量的测评。

  • 场景七:无索引下300万数据规模的查询

同前文一样,我们对无索引的表进行6个类型脚本的查询,取连续10次查询的平均值,得出的对比图如下:

南大通用的效率相比起来相差较大,去掉南大通用得影响后:

达梦数据库的性能在这个场景中领先,人大金仓其次。

  • 场景八:有索引下300万数据规模的查询

对四个数据库添加索引后,依然采用6类脚本进行查询,取连续10次查询的平均值,结果如下:

索引对南大通用的提升效果明显,但是南大通用遇到了join表关联查询后,性能大幅度下降。去掉南大通用后,其余数据库的比对如下:

剩余三个数据库中,神通数据库性能相对较差,且不仅仅表现在join关联脚本中。去掉神通数据库后的比对情况如下:

综上,在300万数据规模场景中,南大通用与神州通用都表现出不同程度的性能下降,而达梦与人大金仓的性能及稳定性方面相对较好,综合比较,达梦有一定的优势。

最后,我们决定再次加大数据量,在后面的场景中,部分场景将直接排除掉南大通用与神州通用。

  • 场景九:无索引下1000万数据规模的插入

在无索引环境中,持续往数据库中插入数据,每次插入5万条,直到数据规模达到1000万。结果如下:

从上图中可以看到,即使到了1000万,在无索引的环境下,每个数据均能完成任务,从性能稳定性来看的话,人大金仓出现过较大的波动,而南大通用的稳定性也较差。执行的总时间如下:

人大金仓执行的总用时较长,达梦依然保持较明显的优势。

  • 场景十:有索引下1000万数据规模的插入

在有索引的环境下,连续插入5万条数据,直到数据规模达到1000万。很遗憾的是,在此次场景测试中,南大通用与神州通用在等待了50多个小时候依然不能完成任务,我们不得不终止了这两个数据库的测试,关于达梦与人大金仓的比对如下:

从图中可以看到人大金仓在插入了77次,即385万数据的时候出现了明显的性能下降,而达梦数据库却依然维持较好的性能。总时间如下:

从总时间看,达梦耗时约2.7个小时,人大金仓耗时约22个小时。

对于这个场景,南大通用与神州通用在停止前,我们将日志进行了保存,日志的最后几条记录给大家分享下:

  • 场景十一:无索引下1000万数据规模查询

在1000万数据的没有索引的情况下,对6类脚本进行查询,取连续10次查询结时间的平均值,得出的对比结果如下:

在该的数据规模下,人大金仓性能完成了反超,达梦的性能下降。

  • 场景十二:有索引下1000万数据规模查询

在1000万数据的有索引的情况下,对6类脚本进行查询,取连续10次查询结时间的平均值,得出的结果如下:

在该场景下,达梦仍然出现了性能下降,稳定性下降的情况。人大金仓优势明显。

综上,在1000万量级的数据规模中,人大金仓的查询性能在有无索引的情况下都反超达梦。同时也能看出达梦在大量数据持续插入场景下的高效稳定。

本期所有评测结果到此结束!

评测环境:

为了使评测结果的真实有效,我们尽可能的保证数据库执行环境的一致性,主要做了以下5个方面的统一:

(1)统一服务器环境

既然评测的是国产化数据库,国产化环境当然必不可少了,本期的所有内容都是基于ARM架构的服务器环境,详细的服务器配置如下:

(2)统一数据库环境

四个数据库均采用了docker方式进行了部署,且均没有进行调优,一台服务器对应一个数据库,最大程度保证了数据库运行环境的独立性。数据库及容器环境版本如下:

为什么要选这四个国产数据库?为何选用单机版本?我们将从三个方面解释下:

  • 国产信创目录为评测首选。目前政务、国企数字化建设一律采用信创目录数据库。
  • 单机足以系统以满足大多数业务场景的需求,同时与几个数据库厂商交流中,数据库厂商也倾向于单机版本的使用。当然,在数据量特别大的业务场景除外。
  • 这四个数据库流行度较高。

(3)统一SQL执行环境

为了减少不同数据库的客户端带来的偏差,我们抛弃了数据库自带的客户端,统一采用JDBC的方式对脚本进行了执行。我们还将数据插入的应用直接部署在了数据库对应的服务器中,最大程度减少网络带来的影响。

(4)统一数据与索引

对于数据的插入及查询,均采用统一个数据源,数据源为1000万随机全英文数据,数据内容为英文企业假数据。该数据生成脚本已放入后台,感兴趣可通过关注渝州大数据实验室公众号回复“国产数据库1”进行下载。而四个数据库均采用的BTREE类别的索引,且也都是对同一个字段创建的。

(5)统一查询脚本

在本次评测中,我们设计了6个查询类脚本,查询的难度由低至高,从简单sum函数及between,再到后面的join均有涉及。关于脚本的具体内容,也放在了后台,可通过关注渝州大数据实验室公众号回复“国产数据库1”进行下载。

我们过程中使用到的工具:图表的生成采用的jupyter notebook+pyecharts的方式,同时保留了所有图表生成代码及结果文件。如果对我们的内容感兴趣或者有疑问,可通过公众号进一步联系我们。

最后:

如前文提到的,当前是第一期的内容,第二期评测内容将重点关注数据库批量更新及删除,第三期内容重点关注行业场景,包含大文本场景和地理空间场景的评测,以及在X86环境下的对比,希望大家能够持续关注,收藏点赞。或者您有什么好的想法也可以告诉我们,我们将认真对待与您的每一次交流。

本期结束。

微信公众号搜索 “渝州大数据实验室” ,关注公众号回复“国产数据库1”获取资源。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐