北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
那些拥有不死之身的旧软件,可以让我们从中学习到什么?
作者 | Matthew MacDonald译者 | 苏本如,责编 | 郭芮
以下为译文:
在万圣节,你可以讲这样一个万圣节的故事来吓唬一下普通的公司程序员。假想一下,如果你将宝贵的业务数据放在一个由科技巨头微软公司支持的友好数据库程序中,一开始,一切看起来都是那么地完美,但是你就是无法摆脱那种厄运即将来临的诡异的感觉。
接着,你的噩梦开始了。在只有三个人使用这些表格时,效果非常好。但是,当整个公司都加入进来使用时,一些神秘磨人的小故障就会接踵而来。你的老板让你构建一个Web界面,使得远程办公室可以使用数据库,但是你却发现——什么数据库也找不到,只有一个巨大的,没有灵魂的空洞,而那里应该有 Web支持的。你想从它当中寻找你所期望的传统数据库的一些行为吗?别做梦了!想要安全模型吗?不,这里的每个用户都可以访问所有内容。想要数据完整性吗?还是醒醒吧,因为根本没有记录数据库操作的日志文件。想要遵守开发标准吗?别问,就此打住!看到这里时,你是不是觉得心都凉了!
然而,这些就是最让人寒心的吗?你想多了!就是这样的破东西甚至还要收你的费!
这就是Microsoft Access(以下简称Access)的故事。Access是一款使用方便的数据库软件,它已经有近30年的历史,但是至少在10年前,它就已经渐显老态。你可能认为Access早就死了,但是你错了。事实上,Access仍然像只僵尸一样踯躅而行,它的使用率既没有增长也没有下降。微软公司已经不止一次试图终止它的生命,然而它的用户社区却一次又一次成功地让它起死回生。而其他像FrontPage和Visual Basic 6这样的传统软件产品,却因为被人冷落而早已被掩没在尘埃之中。
将Access视为一个遗留软件噩梦,是显而易见的事。但是它的故事对每个软件设计师都有借鉴意义。它可以让我们洞察是什么让一个产品存活下来、茁壮成长,并且在它的生命周期结束后,仍然历时弥久,保持不死之身。
Access到底有多普及?
首先让我们澄清一件事:Access并没有死亡,而且也不会即将死亡。这似乎违背了数据库软件世界中所有合理的和被大家认可的公理,但是这是我们不得不接受的事实。
数据研究公司的统计结果在这点上保持了高度的一致:使用Access的公司数量不多,但是忠诚度很高。HG Insights统计出目前使用Access的公司有140,000家,这是使用更加专业的SQL Server的公司数量的一半。Infoclutch公司的统计结果与其一致。而DB-Engines根据数据库软件在搜索、社交媒体和Stack Overflow等网站中出现的频率对其进行排名,它得出的结论是:Access在世界上最流行的数据库排名中名列第九!
也就是说:Access挤进了DB-Engines的数据库排名的前十名,和它排在一起的同时还有许多功能非常强大的数据库。
这些统计数字几乎肯定夸大了Access的普及程度。许多企业使用不止一种类型的数据库软件,他们在Access上运行的应用程序几乎可以肯定范围更小,处理的数据更少,而且除非公司的掌舵人有自杀的倾向,否则他们不会把公司日常运营管理中至关重要的数据运行在Access数据库上。同样地,很多公司对一些他们正在使用的技术并不知情,比如说,每一个有WordPress网站的企业也都依赖MySQL数据库,即使这些数据库是其他公司为他们托管的。
对于Access数据库的隐性普及,我深有体会。在2009年,我一时兴起,写了一本关于Access的书。写这本书的理由很简单,多年来,我一直在使用Access来编写一些快速的、临时的数据解决方案,比如跟踪一组书籍,或者管理咨询工作中的发票和付款。所有这些场景都需要用到Excel不能提供的结构和数据编辑控件,这些都可以很容易地在Access数据库环境下找到。使用几张表,一些约束关系,一组小查询,一到两个报告,一个下午的时间就搞定了。
但是,我从来不建议任何人在他们的电子商务网站后面运行一个Access数据库,如果你真的敢这样做,你就自求多福吧。
我写那本书的目的是为了记住我学到的技巧和避免重蹈覆辙,我相信那本书很快就会消失得无影无踪。但是令我惊讶的是,它居然成了我最受欢迎的书目之一。那本书销售至今都没有停止,现在大约每一天或两天都能卖出一本。显然,现在仍然有人对Access感兴趣,即使仅仅是因为他们需要解决上一代业余程序员留给他们的烂摊子。
微软试图杀死Access,但是失败了
每一个混迹于科技圈的人都曾经目睹过一款最受欢迎的软件过早地走向了尽头。谷歌公司的废弃项目可以排成一整片的墓地,微软公司也曾因为冷血杀死自己的孩子(软件)而臭名昭著(有时甚至一次杀掉几个)。比如当年微软宣布放弃Expression Studio这个旨于与Adobe竞争的完整软件家族时,这个软件家族中的所有软件(包括网络、设计和媒体编码工具等软件)都一次性被放弃了。
但是不知道出于何种原因,当微软公司把屠刀指向Access时,它却意外地手下留情了。
微软的第一个错误是决定不一步杀死Access,这完全不像它在杀死Silverlight、PhotoDraw、Minecraft和许多其他软件时的决绝。相反,微软首先试图弱化Access的重要性,它通过故意冷落Access来边缘化它。比如说,在MS Office 2013发布的几个月前,微软甚至没有正式的答案来确定是否会有Access 2013。
接下来,微软开始修改它的特性,去掉一些旧的,但是有时仍然很流行的功能。比如说,导入像dBASE这样的旧格式的能力被移除,创建透视表的能力也被移除,为SQL Server数据库创建Access前端的能力也不再提供,与此同时,将Access数据库迁移到SQLServer的升迁向导也随之消失了。这就像Hostel这部恐怖影片特许放影的噩梦。每一次发布,微软都会从Access身上砍掉一块,但仍然保留了它的主程序。
最引人注目的是,微软试图提供一条脱离Access世界的升级路径。微软接二连三地创建并放弃了至少三种不同的框架,试图将Access数据库放到web上。包括两个Access Web数据库(在Access 2010中引入)和一个Access Web应用程序(在Access 2013中引入),它们都是构建在SharePoint和SQL Server上。但是两者都没有成功,而Access 2019就成了十多年来第一个完全没有Web功能的软件版本。
这些是我们在其他一些失败的软件中没有看到的东西。我们看到微软试图在Access之外给它提供一个升级路径,但是失败了,最后它被迫完全放弃。这就像弗兰肯斯坦的怪物一样,造物主抛弃了他的创造物,但是却无法杀死它。