MySQL 也要删“blacklist”,万万没想到技术术语能有沦为技术债的一天
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
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 产品版本,也会逐步对相关术语做出修改。
多家公司和开源项目都在修改技术名词
虽然 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”即可,但是如果数量很多的话,也会成为一个问题。
另外,技术术语的替换也是需要一定的时间。以 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://yqh.aliyun.com/zhibo立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-07-08
本文作者:田晓旭;核子可乐
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ”

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
再见, VS Code !你好,GitHub!
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Github 最新推出的 Codespaces 可以实现基于 VS Code 的云端代码编译。现在,你在手机、平板上都可以直接进行开发。云端开发不能更美好了,用上 Codespaces 后,不仅可以把 IDE 卸载掉,什么 Conda、Docker 都可以删了「大误」。 再见,VS code !你好 Github! 在今年 GitHub 的第一个虚拟会议——Satellite 上,GitHub 发布了由 Visual Studio 提供技术支持的在线 IDE 工具——Codespaces。这是一款集成在 GitHub 网页中的开发工具,为开发者提供了不离开页面的「沉浸式」开发体验,目前已向公众开放小规模测试。Codespaces 传送门:github.com/features/codespaces 值得一提的是,在 Satellite 上与 Codespaces 一同发布的还有:GitHub Discussions:一种在 codebase 之外开展合作的新方式;Code scannin...
- 下一篇
物联网的夏天:互联设备如何在阳光下制造乐趣
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 夏天来了——今年带来的不仅仅是炎热的天气。更便宜的硬件和更好的连接意味着物联网设备正在越来越多地塑造我们的现代生活。今天,美国家庭平均拥有11个联网设备,改善户外生活和夏季生活方式的应用程序继续受到欢迎。 从游泳池主人到热心的园丁,再到安全意识强的人,让我们来探索一下联网设备如何提高我们在阳光下的乐趣。 游泳池维护变得容易 游泳池的主人可能会告诉你,没有什么比在炎热的夏天拥有自己的游泳池更好的了。然而,与此同时,这些业主往往会说,没有什么比拥有一个水质有问题的游泳池更糟糕的了。藻类爆发,透明度差和强烈的化学气味足以破坏任何人在池畔放松的一天。通过这种方式,连接的传感器可以为各地的泳池业主节省暑假。 无线传感器可在一天中的任何时间提供准确的游泳池信息。任何用户只需将设备(例如,pHin水监测仪)扔进游泳池,即可接收实时水质分析、温度读数、化学剂量建议、pH值,更直接地发送到智能手机上。同时,对于那些夏天并不总是意味着酷暑的国家,WiFi控制的热泵(如HeaterReader)只有在需要时才...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装