• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

MySQL开发周期

MySQL 彭东稳 7年前 (2017-05-18) 27862次浏览 已收录 0个评论

一、MySQL许可协议

Oracle以双重授权(Dual Licensed)的方式发布MySQL,它们是GPL和商业许可协议(Commercial License)。如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL,无论是否将其用作商用。

如果某些商业软件中结合了MySQL或修改了MySQL源码,但又不愿意按GPL协议公开软件源码,那么就必须和Oracle公司达成商业许可协议。简而言之,如果你违反了GPL,则需要购买商业许可。

GPL授予用户以下权利。

  • 以任何目的运行此程序的自由。
  • 再发行复制件的自由。
  • 改进程序,并公开发布改进内容的自由。

需要注意的是,GPL只限制了对外分发的软件,也就是说,如果该软件只在内部使用,无论开不开源都没有关系。如何使用开源软件并不受GPL的约束,只有在你基于开源软件,修改开源软件的源码时才受GPL约束,如果你的应用程序只是用到了MySQL,无论是否商用,都不需要考虑开源。

二、MySQL开发周期

Oracle公司是一家成熟的商业公司,拥有一流的工程能力和执行力,自收购MySQL以来,就增加了相应的开发人员,并且提供了更成熟的开发模式,目前MySQL的开发进度比收购之前高了很多,许多第三方的优化补丁也都在官方版本中得到了实现。而之前MySQL的400多名开发人员分布在25个国家,70%的开发人员在家工作,导致了交流沟通不畅,产品开发进展缓慢。

MySQL版本命令机制:由主版本号,此版本号,修订版本号组成。如:MySQL-5.6.27。目前MySQL的发展路线更清晰,开发周期大致分为如下几个阶段。

第一步:新特性开发(AIpha)

表示这是一个以展示新特性为目的的版本,存在比较多的不稳定因素,会随时向代码中添加新新特性。

新功能遵循如下规范:

  • 首先在worklog条目中指定MySQL新功能。
  • worklog条目经过设计,架构和QA审查(但不一定是严格的顺序)。
  • MySQL新特性是在feature tree中实现的。
  • feature tree是由MySQL主开发树(称为TRUNK)创建并保持同步的 。
  • 当一个新功能被实现时,它将进行代码审查。
  • 代码审查完成后,feature tree将被移交给QA(质量保证)。
  • QA测试功能,开发者修复错误,并且QA最终“签字”此功能。
  • 一旦该功能完成后,它将被合并到TRUNK中。

这样,TRUNK就会随着时间的推移积累很多新功能和错误修复。广泛的回归测试是在TRUNK上执行,任何时间都保持TRUNK接近Release Candidate (RC)

的质量。

第二步:新特性测试(Feature Testing)

MySQL中的新功能在被推送到TRUNK之前在单独的feature tree中开发和测试。只要开发团队确定了功能的要求和规格,QA的参与就开始了。QA审查可用的文档,并提供有关设计,可用性,可测试性等方面的反馈。开发人员会进行讨论,并根据需要进行更改,以确保可以对该功能进行测试。

一旦规格和要求可以接受,QA就会创建测试计划,记录所有要测试的场景。这包括独立测试,集成测试,非功能测试等。测试计划由开发人员和同行QA团队成员审查。

在开发人员编写产品代码时,QA工程师开始进行自动化测试,测试基础架构改进等。最后一轮测试在功能通过代码评审后开始。这个阶段可以持续几天到几个月,取决于功能的复杂性,代码的稳定性,发现的错误的数量等。

第三步:性能测试(Performance Testing)

执行性能测试以确保产品的性能曲线不会退化,性能测试在整个开发过程中(在当前的TRUNK分支)完成,并侧重于吞吐量测试和响应时间测试。

  • 吞吐量测试

吞吐量测试的重点是高并发性场景,并发连接范围从8到1024,测试是使用像sysbench这样的开源应用程序来执行的,重点在于简单查询和简单的OLTP事务,还包括自定义工作负载。其他测试更深入地研究复杂的OLTP吞吐量。这些测试使用每个测试的短持续时间为5到10分钟,有不同的服务器配置选项以及批处理和原子事务类型的不同数据集大小。这些测试的主要目的是揭示瓶颈,消除回归,并对吞吐量进行基准测试。结果被存档在数据库中以便于比较检索。

  • 响应时间测试

响应时间测试是针对单线程完成的,因为主要关注的是确保查询计划和执行时间性能的一致性。使用开源标准化测试来改善和防止解析器或优化器中的回归。我们使用两种不同的配置,其中一种执行CPU绑定测试,另一种执行I/O绑定测试。结果自动与以前的测试结果进行比较,并存档在数据库中。从这些数据中,创建摘要和报告。

除了测试新功能外,所有上述测试都是定期执行(每日和每周)。这些测试在Linux和Windows平台上运行。

第四步:发布实验室版本(Beta)

实验室版本是开发中的一个或多个功能的预览,通常尚未集成到TRUNK中。当MySQL社区对评估早期工作感兴趣时,会创建实验室发布,并且是特定时间点的feature tree快照。实验室版本可以具有测试版(Beta)质量,或者只能在有限的平台上使用,或者文档不可用。最后,不能保证实验室版本中的功能将出现在将来的DMR或GA版本中,实验室版本可以在labs.mysql.com找到 。

第五步:发布里程碑版本(Development Milestone Releases)

一个开发里程碑版本(DMR)是每隔3-6个月从TRUNK产生的,这个时候的版本称为RC(Release Candidate,候选)版本,有充分的文档支持,在所有支持的平台上发布,可以让用户试用,以收集反馈。

DMR的目的是“ 经常发布 ”,作为早期使用者的服务,并收集来自客户和用户的反馈。该反馈用于改善下一个DMR,DMR可以在MySQL开发人员专区找到

开发里程碑版本产生如下:

  • 发布经理为新功能设置DMR截止日期。
  • DMR将包括在截止日期之前将其设置为TRUNK的所有功能。
  • 功能是在独立的feature tree上开发和测试的,只有在QA批准后才能推送到TRUNK。
  • 在所有功能被推入TRUNK之后,TRUNK被锁定,自动回归测试。
  • 一旦测试运行为绿色,QA就会关闭TRUNK。
  • DMR被克隆出来放在一个单独的树上,然后TRUNK被重新开放用于正常的工作。
  • QA对克隆的DMR进行扩展测试,在过程中发现的错误是固定的,最终QA批准DMR。
  • DMR发布并宣布。

第六步:发布GA版本(Generally Availability Releases)

GA版本是推荐用于生产系统的版本,总体目标是每18到24个月产生一个新的GA版本。GA版本可以在MySQL开发人员专区找到

GA版本的制作如下:

  • GA版本基于DMR。
  • 选定的DMR进行额外的测试和错误修复,那么第一个RC(发布候选)就会被制作并公开。
  • RC经过客户和用户的评估,这会导致需要更多的RC循环,直到达到GA质量。
  • GA版本发布并公布。

官方:http://dev.mysql.com/doc/mysql-development-cycle/en/index.html


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (3)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!