MySQL也要删“blacklist”,万万没想到技术术语能有沦为技术债的一天

2020 年 7 月 8 日 InfoQ
作者 | 田晓旭、核子可乐
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 Replication

  • MySQL InnoDB Cluster

  • MySQL InnoDB ReplicaSet

为什么要改为“source”呢?MySQL 解释称:“MySQL 异步副本代表一条变更流,其中每一项副本配置都对应一个来源,且并不表示服务器在整体数据库架构中应扮演哪种角色。这样,之前的主从关系并不能适用,尤其是利用副本构建数据库架构拓扑中的双向副本、多层副本甚至是循环副本时,其角色定义更不应如此简单粗暴。”

目前,MySQL 8.0 说明文档中已经发布了术语变更的第一阶段内容,培训与认证以及后续即将推出的 MySQL 产品版本,也会逐步对相关术语做出修改。

1多家公司和开源项目都在修改技术名词

虽然 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 等。

2技术术语变技术债?

修改技术术语,说起来简单做起来难,相信很多人都没有想到,有一天技术术语也会沦为技术债:一是需要替换的技术术语的数量可能会非常多;二是想要完全把代码中的术语都替换掉,过程可能非常复杂,尤其是当某些项目发展很多年,代码积累很多的时候;三是某些术语在替换之后可能会导致系统奔溃。

根据相关报道,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://mysqlhighavailability.com/mysql-terminology-updates/

https://9to5google.com/2020/06/12/google-android-chrome-blacklist-blocklist-more-inclusive/


InfoQ 写作平台欢迎所有热爱技术、热爱创作、热爱分享的内容创作者入驻!

还有更多超值活动等你来!

扫描下方二维码

填写申请,成为作者

开启你的创作之路吧~


点个在看少个 bug 👇

登录查看更多
0

相关内容

一个开源的关系型数据库,开发者为瑞典 MySQL AB 公司。在2008年1月16号被 Sun 公司收购。而2009年,SUN 又被 Oracle 收购.目前 MySQL 被很多互联网企业所使用。有体积小、速度快、总体拥有成本低,开放源码等优点
【干货书】Python 编程,480页pdf
专知会员服务
235+阅读 · 2020年8月14日
【2020新书】高级Python编程,620页pdf
专知会员服务
235+阅读 · 2020年7月31日
【机器学习术语宝典】机器学习中英文术语表
专知会员服务
59+阅读 · 2020年7月12日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
高效医疗图像分析的统一表示
专知会员服务
34+阅读 · 2020年6月23日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
知识图谱融合方法,140页ppt,南京大学胡伟老师
专知会员服务
142+阅读 · 2020年2月19日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
阿里 Lindorm 技术解析:支撑每秒7亿次请求
DataFunTalk
5+阅读 · 2019年12月13日
写缓冲(change buffer),这次彻底懂了!!!
架构师之路
5+阅读 · 2019年6月25日
这么多年,终于知道为啥右指针不能往回走了
九章算法
5+阅读 · 2019年4月15日
Go存储怎么写?深度解析etcd存储设计
高可用架构
4+阅读 · 2019年1月16日
为什么分布式一定要有消息队列?
互联网架构师
4+阅读 · 2018年7月5日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
码农不识贝叶斯,虽知数据也枉然
Python开发者
6+阅读 · 2018年1月24日
科普 | 知识图谱相关的名词解释
开放知识图谱
12+阅读 · 2017年12月4日
领域应用 | 中医临床术语系统
开放知识图谱
7+阅读 · 2017年9月7日
Arxiv
101+阅读 · 2020年3月4日
A General and Adaptive Robust Loss Function
Arxiv
8+阅读 · 2018年11月5日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
7+阅读 · 2018年1月21日
Arxiv
27+阅读 · 2017年12月6日
VIP会员
相关VIP内容
【干货书】Python 编程,480页pdf
专知会员服务
235+阅读 · 2020年8月14日
【2020新书】高级Python编程,620页pdf
专知会员服务
235+阅读 · 2020年7月31日
【机器学习术语宝典】机器学习中英文术语表
专知会员服务
59+阅读 · 2020年7月12日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
高效医疗图像分析的统一表示
专知会员服务
34+阅读 · 2020年6月23日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
知识图谱融合方法,140页ppt,南京大学胡伟老师
专知会员服务
142+阅读 · 2020年2月19日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
阿里 Lindorm 技术解析:支撑每秒7亿次请求
DataFunTalk
5+阅读 · 2019年12月13日
写缓冲(change buffer),这次彻底懂了!!!
架构师之路
5+阅读 · 2019年6月25日
这么多年,终于知道为啥右指针不能往回走了
九章算法
5+阅读 · 2019年4月15日
Go存储怎么写?深度解析etcd存储设计
高可用架构
4+阅读 · 2019年1月16日
为什么分布式一定要有消息队列?
互联网架构师
4+阅读 · 2018年7月5日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
码农不识贝叶斯,虽知数据也枉然
Python开发者
6+阅读 · 2018年1月24日
科普 | 知识图谱相关的名词解释
开放知识图谱
12+阅读 · 2017年12月4日
领域应用 | 中医临床术语系统
开放知识图谱
7+阅读 · 2017年9月7日
相关论文
Arxiv
101+阅读 · 2020年3月4日
A General and Adaptive Robust Loss Function
Arxiv
8+阅读 · 2018年11月5日
Arxiv
4+阅读 · 2018年10月31日
Arxiv
7+阅读 · 2018年1月21日
Arxiv
27+阅读 · 2017年12月6日
Top
微信扫码咨询专知VIP会员