• 1. MySQL开源社区的协作模式
  • 2. RDS MySQL开发2010-22012-72013-10时间MySQL DBAMySQL研发彭立勋@阿里云-核心系统研发-数据库组 Oracle ACE for MySQL RDS MySQL Maintainer MariaDB Committor WebScaleSQL Committor MySQL Contributor自我介绍
  • 3. MySQL的分支们分支所有权商业支持协议主要客户研发目标MySQL官方Oracle Inc.Oracle Inc.GPL/商业授权Facebook/Alibaba开源数据库No.1MariaDBMariaDB FundationSkySQL Inc.GPLWikipedia/Google保持完全开源的MySQL兼容版PerconaPercona Inc.Percona Inc.GPLAlibaba/Sohu优化InnoDBWebScaleSQLFB/Twitter/LinkedIn…无GPLNone针对互联网公司RDS MySQLAlibaba Inc.Aliyun Inc.GPLAlibaba针对云计算
  • 4. 官方版本的价值为所有分支提供基础版本 有Oracle提供强大的商业支持 完善的开发、测试体系流程 拥有InnoDB的版权 Test Case不完全开放 不直接接受社区补丁 发版速度慢
  • 5. MariaDB存在的价值MySQL之父Monty从Sun离职创建 保持始终有一个完全遵循GPL的MySQL兼容版 优化器团队原班人马,Optimizer模块目前具有优势 敢于尝鲜,积极吸收社区新功能、新引擎 原生包含TokuDB,有Aria替换万恶的MyISAM 开发过程完全开放 反逼MySQL积极开发 版本测试不严格
  • 6. WebScaleSQL存在的价值Facebook领头,全球互联网巨头参与 针对互联网业务特殊定制需求 各家交流自己的业务补丁 实验最前沿的技术方案 测试流程不严格 发版时间不固定 参与人员不稳定
  • 7. Percona存在的价值MySQL早期优化团队负责人Peter创立 针对新技术新硬件的发展,积极优化InnoDB 为社区尝试最激进的优化策略 为官方版本反馈有效的优化改进 大部分有效优化已被官方实现 测试欠缺,Bug较多 与社区沟通不足
  • 8. RDS MySQL存在的价值所有分支均不接受的特殊场景下的优化(例如秒杀) 所有分支均不能快速修复的极小概率Bug 可以为内部中间件做特定匹配 可以为内部特殊硬件做特定优化 小版本不会及时跟上官方版本发布节奏 没有跨平台支持,只支持Linux
  • 9. 如何避免重复开发代码规范以官方规范为准 尽量基于官方提供的函数实现功能 尽量不修改原有函数的含义,新开函数实现新功能 Bugfix以官方为准,官方已Fix则回滚自己的Fix方案 功能官方实现后,以官方代码为准重新Port 大准则:能用官方的绝不要标新立异
  • 10. 官方的开发模式所有社区补丁均不直接吸收,由官方人员重新实现 优先支持付费商业客户的需求(Facebook是最大的付费用户) 依照Oracle开发测试流程严格执行 实现方案内部讨论,对社区只公布最终WorkLog 内部拥有独立的代码分支,最终版本发布前不公开CommitLog Bzr/Git源会剔除部分Log和TestCase,并延迟版本发布
  • 11. MariaDB的开发模式官方版本跟进到MySQL 5.5为止,后面独立开发 Storage Engine直接采用各自的官方版本 社区补丁经过专职人员Review直接吸收 专注于Optimizer和Replication模块 引用大公司的支持:Google有MariaDB专职开发
  • 12. WebScaleSQL的开发模式各厂码农在Google Group提交Idea 由码农自行认领开发任务和Review任务 Facebook负责最终回归测试和合并主干 没有全职雇员,大家凭兴趣参与 通用补丁由Facebook提交官方合并 各家可以将其他厂有价值的补丁提取到自己内部分支
  • 13. Percona的开发模式Server直接使用官方版本,专注InnoDB层的改进 由全职雇员负责维护 采用Patch方式维护版本,跟随官方版本升级 已逐渐转变为输出脚本工具和提供咨询服务
  • 14. MySQL社区生态
  • 15. THANKS!