热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

7月1日,MySQL官方博客发文称,计划在数据库源代码和文档中停止使用master、slave、blacklist(黑名单)和whitelist(白名单)等术语,并使用source

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 团队表示将调整这些术语表达:

cd48f4b1435799aebcceb72e048c40f3.jpeg


据了解,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”即可,但是如果数量很多的话,也会成为一个问题。


81cc8106ef0c294ab4d89a52bf7bb653.jpeg

谷歌 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/


原作者:田晓旭、核子可乐
原文链接:MySQL也要删“blacklist”,万万没想到技术术语能有沦为技术债的一天
原出处:公众号
侵删

f5aa013d02de63625929405d0b08efdf.jpeg



推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
wbklzh
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有