MariaDB 10.0 说明

五月末,我在博文《MariaDB 当前版本与 MySQL 5.6 之间会有什么变化?》中谈到了 MariaDB 下一个版本的版本号规划。关于将下一个版本命名为 MariaDB 10.0 的想法,我们收到了不少反馈和批评。本文将进一步说明为何将下一个版本命名为 10.0 是合理的。

对于你们大多数人来说,这已经不是新闻了。MariaDB 不仅仅是在 MySQL 之上打的一系列补丁。MariaDB 包含一些与 MySQL 中对应功能相似的特性,但在实现上有所不同,例如线程池微秒支持以及RBR binlog 中的查询注释。MariaDB 还包含许多 MySQL 中没有的功能。有关功能的完整差异列表,请查看此链接:http://kb.askmonty.org/en/mariadb-versus-mysql-features/

将下一个 MariaDB 版本称为 MariaDB 5.6 将会产生误导。

最终,将会有一个 MariaDB 版本包含所有 MySQL 5.6 的功能,无论是移植过来的还是以不同方式实现的。但在那之前,至少会有几个版本包含一些从 MySQL 5.6 移植过来的功能以及一些 MySQL 5.6 中完全没有的新功能。

我们收到的一个担忧是,用于验证所连接服务器版本的工具和其他客户端如果不修改,可能会与 MariaDB 不兼容。感谢来自 Webyog 的 Peter Laursen 在这方面提供的意见!问题在于,工具和其他客户端依赖于 “SELECT VERSION();” 的返回值。工具会根据返回的版本号启用或禁用某些功能。事实是,没有任何版本号命名方案能完全解决这个问题。即使我们将下一个版本称为 5.6.1,它也不会包含 MySQL 5.6.1 的所有功能,而只包含其中一部分。它还会包含一些后续 MySQL 版本的功能,以及 MySQL 中根本没有的功能。换句话说,没有哪个单一的 MySQL 版本号能够充分描述 MariaDB 的功能集。因此,我们认为使用一个完全不同的、独特的版本系列号会减少混淆和歧义。

我们建议 “SELECT VERSION();” 返回正确的版本号,例如 10.0.1-MariaDB。

除了上述原因,当前的 MariaDB 版本与 MySQL 相比,已经为工具引入了额外的功能——例如更多的统计信息和额外的开关。这些新增功能对于工具充分利用非常有益。我们强烈建议工具供应商现在就开始在这方面区分 MySQL 和 MariaDB,并且这样做在未来只会变得更加重要。我们还在考虑引入一种方法,让 DBA(数据库管理员)能够影响 VERSION() 字符串的显示内容。

有一个似乎排除了所有更花哨版本号命名方案(例如 5.5-10.0)的领域是发行版软件包,它们通常只支持 major.minor[.build[.revision]] 这种标准的版本号命名方式。即使某个特定的包格式支持更复杂的版本号方案,如果引入的新版本号不仅仅是递增的数字,升级的判断也会变得困难。

希望本文能够解释选择 10 作为下一个 MariaDB 版本号背后的逻辑。但是,我们仍然非常欢迎您对此提出反馈意见。