免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/
7 月 1 日,MySQL 官方博客发文称,操持在数据库源代码和文档中停滞利用 master、 slave、 blacklist(黑名单) 和 whitelist(白名单) 等术语,并利用 source、replica、blocklist 和 allowlist 等新术语更换现有术语。
MySQL 是广受欢迎的开源数据库,在 DB-Engine 数据库排行榜中一贯稳居第二。2000 年,MySQL 3.23.15 正式引入了 MySQL 副本功能,随后,副本功能得到了广泛运用,险些所有的 MySQL 数据库都在利用副本功能来实现高可用性、灾害规复、读取扩展等等。

而在副本功能包含有这样一些名词,“主(master)”、“从(slave)”等等,MySQL 团队表示将调度这些术语表达:
据理解,MySQL 最新版本已经利用 Primary/Secondary 定义做事器在数据库架构中扮演的不同角色:
MySQL Group ReplicationMySQL InnoDB ClusterMySQL InnoDB ReplicaSet为什么要改为“source”呢?MySQL 阐明称:“MySQL 异步副本代表一条变更流,个中每一项副本配置都对应一个来源,且并不表示做事器在整体数据库架构中应扮演哪种角色。这样,之前的主从关系并不能适用,尤其是利用副本构建数据库架构拓扑中的双向副本、多层副本乃至是循环副本时,其角色定义更不应如此大略粗暴。”
目前,MySQL 8.0 解释文档中已经发布了术语变更的第一阶段内容,培训与认证以及后续即将推出的 MySQL 产品版本,也会逐步对干系术语做出修正。
多家公司和开源项目都在修正技能名词虽然 MySQL 团队在博客中没有表明修正术语的缘故原由,但是此前已经有多家公司和开源项目也从代码库和文档中删除了相似的术语,情由是这些术语可能会导致种族偏见。
弗洛伊德事宜发生之后,肃清种族偏见的呼声迎来新高,并蔓延到了软件领域,微软程序员兼教诲家 Scott Hanselman 发文呼吁肃清编程中常见的“主 - 从(master-slave)”表述:“互联网工程任务组(IEFT)认为主 - 从(master-slave)是一种压迫性的比喻,这种表述背后是深刻的历史烙印。因此无论是从技能层面还是立足历史角度,都不应该利用这样一种搪突性的比喻。”
因此,我们看到不仅是 MySQL,多家公司和开源项目都在删除相似的术语:
谷歌从终极用户可见的所有位置删除了“blacklist”和“whitelist”, 分别用“blocklist”和“allowlist”代替,Chromium 将 components/blacklist 目录中的类名称重命名为 components/blocklist;Pivotal 的 LicenseFinder 将“whitelist(白名单)”更换为“permitted licenses(授权容许)”;GitHub Desktop 软件在 2019 年就完成了相似术语的更换,GitHub CLI 也在不久前将“master(主)”更换为“trunk(主干)”;Twitter 也表示将更换删除 9 个术语,个中包括 whitelist、blacklist、 master/slave。…除此之外,还有一些公司和开源项目是公开表示有调度技能术语的操持,例如 Microsoft、LinkedIn、Ansible、Splunk、Android、Go、PHPUnit、Curl、OpenZFS、OpenSSL、JP Morgan 等。
技能术语变技能债?修正技能术语,提及来大略做起来难,相信很多人都没有想到,有一天技能术语也会沦为技能债:一是须要更换的技能术语的数量可能会非常多;二是想要完备把代码中的术语都更换掉,过程可能非常繁芜,尤其是当某些项目发展很多年,代码积累很多的时候;三是某些术语在更换之后可能会导致系统奔溃。
根据干系宣布,Google 有超过 2000 个与“blacklist”干系的术语将被更换掉。虽然更换“blacklist”这个单词的过程不会很繁芜,把“blacklist”中的第三个字母“a”更换成“Blocklist 的“o”即可,但是如果数量很多的话,也会成为一个问题。
谷歌 Chrome 浏览器的程序职员给出的移除“blacklist”以及“whitelist”等用语的建媾和步骤
其余,技能术语的更换也是须要一定的韶光。以 MySQL 团队的实践为例,虽然 MySQL 部分语法的调度可以通过为现有命令添加别名的办法实现,例如将 SHOW SLAVE STATUS 变更为 SHOW REPLICA STATUS。但这还远远不足,仍有很多命令会在返回的结果列名称中包含文本“主”与“从”表达。
要完备肃清这些技能术语,是一项非常艰巨的事情。为了保持向下兼容,MySQL 团队须要首先弃用个中某些术语,而后再行删除。相较于纯挚“更换”原有语法,最主要的无疑是尽快开拓出新的推举语法,例如 SHOW REPLICA STATUS 。
而且,MySQL 无法单靠一个发行版就删除所有引用。为了连续支持数百万套 MySQL 支配方案,须要通过多次迭代逐步从语法、协议、缺点以及源代码中弃用及 / 或删除这些术语表达。
GitHub 开拓职员 Brian Golson 也表示:“修正技能术语这项事情强度非常大,不可能凭一己之力完成。”同时他还指出了修正术语可能导致系统奔溃:“如果我们对 buildin/init-db.c 直接进行逐行修正,那么大概会引发 304 项测试失落败,约占总体测试失落败数量的三分之一。”
对付 MySQL 及其它项目修正“blacklist”等技能术语,你们是怎么看的呢?欢迎在评论里留言哦!
免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/