微软 Access 烂透了,为什么它还能活这么久?

作者丨Matthew MacDonald

译者丨核子可乐

策划丨陈思

咱们先讲个恐怖小故事。

想象一下,有一天,你把宝贵的业务数据存入微软公司支持的数据库程序当中。整个过程很顺利,似乎不可能出现什么问题——但是,你心里隐隐有种不祥的预感。

接下来,问题接踵而至。在只有三名用户时,这种形式运作良好。但当整个企业都开始接入后,系统开始出现某些神秘的故障。老板要求你创建一套 Web 界面,帮助远程办公团队也能使用这套数据库。但是,你发现自己根本就无从下手:网上一点相关资料都没有,你也找不到其他常规数据库所应提供的任何支持机制。安全模型?(不存在,每个用户都能访问所有内容。)适当的数据完整性?(不存在,压根不存在负责记录数据库操作的日志。)开放标准?(想都别想。)这一瞬间,你感觉整个人都凉透了。

最可怕的是什么?就这么个玩意,居然还要收费。

没错,说的就是微软 Access 了。这是一款易于上手的数据库软件,已经拥有近 30 年的历史,而且至少从 10 年前开始就暴露出种种问题。很多朋友可能觉得 Access 很久之前就已经挂掉了。但你错了,Access 实际仍然活着,而且活得还很……稳定,其使用率既不增长也不下降。微软虽然多次尝试将其淘汰,但用户社区仍然让 Access 留住了最后一口气。相较于确实已经死透了的 FrontPage 以及 Visual Basic 6,Access 的生存状态简直可以用“奇迹”来形容。

既然 Access 问题多多,为什么它的命运却如此不同?这正是本文打算探讨的话题。软件设计师不妨从中汲取经验,想想 Access 是怎样在全面落后的情况下,仍然保持如此广泛的影响力的。

Access 的人气

让我们先澄清一点:Access 并没有死,而且也不会死。虽然这可能与数据库软件世界的运行规律有所冲突,但请相信我,这就是事实。

数据研究企业们普遍意识到,虽然使用 Access 的群体不算大,但其忠诚度却相当突出。HG Insights 统计称,目前仍有 14 万家企业在使用 Access,数量相当于 SQL Server 客户规模的一半。Infoclutch 也给出了类似的结论。DB-Engines 根据对应关键字在搜索引擎、社交媒体以及 Stack Overflow 网站上出现的频率对数据库软件进行了排名,并表示 Access 是目前全球第九大最受欢迎的数据库:

Access 成功挤入了 DB-Engines 的排行榜,与其他功能强大的现代数据库并列。

这些统计数据肯定是夸大了 Access 的普及度。毕竟多数企业都会同时使用多种数据库软件,而且采用 Access 的应用程序肯定规模较小、重要度较低。除非 CEO 有着疯子一般的偏执,否则不可能有哪家企业愿意用 Access 来管理自己的核心业务。更重要的是,很多企业其实是在无意识的情况下使用 Access 的——就像每个拥有 WordPress 网站的企业,都相当于在使用 MySQL 一样。

我对 Access 这种闷声发大财的生存方式有着自己的理解。2009 年,我写了一本关于 Access 的书。之所以要写这么一本书,是因为我本人多年以来一直在利用 Access 作为临时性数据解决方案——例如整理书籍集合或者管理咨询工作中的发票与付款条目等等。这些场景需要的数据结构与编辑控制水平超过了 Excel 的处理能力,但又犯不上使用更为复杂的先进数据库系统。因此,Access 就成了最理想的选择——几个表、某些带有约束条件的关系、一点点查询再加个几份报告,Access 能够在一个下午之内帮我处理好所有轻度数据管理任务。

换句话说,Access 找到了自己不可替代的生存空间。当然,我可没说让大家用它来支持电子商务网站这类复杂应用,绝对没有。

在书中,我总结了自己在使用 Access 过程中积累下的心得与教训。令我惊讶的是,这是我卖得最好的一本书,直到现在也经常能售出那么一、两本。很明显,仍有不少人对 Access 抱有兴趣,虽然我猜他们只是希望弄明白怎么解决前任外包程序员留下的麻烦。

软件项目是怎么走向灭亡的

每一位技术从业者,应该都或多或少见证过自己熟悉的软件从蓬勃发展到走入死路的过程。到处都是废弃的谷歌项目,微软也亲手扼杀过不少软件产品——很多朋友可能还记得 Expression Studio 吧,当时微软可以打算靠它跟 Adobe 在网络、设计以及媒体编码领域一较高下的。

但是,出于某种神秘的原因,微软决定放 Access 一马。

事情的开端,源自微软一个心软的决定。不同于以雷霆手段关闭 Silverlight、PhotoDraww 以及 Minecraft 等项目,微软当时采取了逐步降低 Access 重要度的方式。首先,微软试图通过无视 Access 的方式让其沦为打酱油的小角色。在 Office 2013 发行的头几个月,微软一直没有给出是否会发布 Access 2013 的官方声明。

接下来,他们着手进行功能拆分,删除了一些陈旧但仍有一定使用活跃度的功能。导入旧格式(例如 dBASE)的功能彻底消失,用户无法继续创建数据透视表,无法为 SQL Server 数据库创建 Access 前端,同时取消了将 Access 数据库迁移至 SQL Server 的升级向导。微软一点点地对 Access 进行肢解,但有趣的是程序本体却仍然存在。

接下来,大动作出现了。微软决定提供至少三种不同的框架,帮助用户将 Access 数据库迁移至 Web 上。首先是通过 SharePoint 以及 SQL Server 提供 Access Web 数据库(通过 Access 2010 版引入),随后是 Access Web 应用程序(通过 Access 2013 版引入)。但这些尝试都没能成功,而最新的 Access 2019 更是成为最近十年以来第一套完全不提供 Web 功能的软件版本。

我在其他软件中从来没见过这么奇怪的错位状况。我们先后见证了微软提供的多种 Access 淘汰方案,但却一次也没成功过。最后,微软自己决定放弃。就像科学怪人中的怪物一样,创作者无法将其杀死,因此只能放弃治疗。

从 Access 的经久不衰中汲取经验

事实上,有很多陈旧的事物都能在现代技术世界中继续占据一席之地——没错,说的就是你,COBOL。但是,Access 的特别之处,在于它能够在创造者已经不抱希望的情况下继续保持相对健康的生存状态。

它怎么就这么能熬?其中当然存在众多文化与实际层面的原因,这里我们着重介绍三点。

1. 中度用户缺口

Access 的受众其实非常具体,也就是那些非专业编程人士的技术人员——他们在市场上也一直受到忽视。他们可能知道怎么使用 Office 宏,但却没有科班编程教育背景。我将他们称为“中度用户”。

中度用户相当可怕,因为他们的知识储备虽然不足以担当真正的技术骨干,但却已经具备了搞砸一切的能力。为了发挥他们的能动性,但又不致引发巨大灾难,我们当然有必要准备一种专门的、无需编码的问题解决办法。他们可以借此自动执行小型任务、管理自己的数据孤岛,同时保持本地环境的组织性与有效性。

时至今日,市场对于无代码或者低代码类工具的需求仍然相当旺盛。这些极富干劲的员工不希望在工作中求助于专业人士,而更愿意自己动手尝试解决问题。但到目前为止,他们为这个群体提供的可用产品,除了早已陈旧不堪的 VBA 宏语言之外,就只剩下只有在企业订阅微软云产品堆栈时才能使用的 PowerApps 等工具。

2. 真正的力量,在于为他人赋能

要说 Access 成功的秘诀,那就是:Access 成功为他人赋能,或者说至少让他人感到自己接受了赋能。

我们来看看 Access 的实际用例。我的搭档负责为一家小型音乐学校管理家庭信息、学生信息、班级信息以及出勤情况。很明显,用例当中不存在多人同时编辑数据库的危险,也无需将数据开放给其他平台。使用功能更完善的 SQL Server 能在效果上更进一步吗?其实可以,我们甚至能够使用免费的 SQL Server Express 达成相同的效果。虽然可以,但没有必要,毕竟在 Access 当中,用户只需要填写简单的表单与报表即可满足自己的功能需求。

3. “够用就行”符合大多数人的基本逻辑

考虑一下,设置专业数据库到处需要哪些步骤。就以我刚刚提到的 SQL Server Express 为例,我们至少需要经历以下环节:

安装 SQL Server Express。确保正确完成各项设置,并通过命令启动数据库服务。

下载 SQL Server Management Studio,只有这样才能无需使用 SQL 命令创建数据库。

创建数据库和表。(这部分倒是跟 Access 差不多一样简单)。

选择一种编程语言、数据库库以及开发环境。大家可能还会选择 Visual Studio Community 之类,从而将以上要素捆绑在一起。

在代码中创建数据库连接。根据具体方法,大家可能需要自行编写代码或者使用 Entity Framework 之类的代码生成工具。

接下来才是征。为了访问数据库,我们需要向运行代码的账户(通常并不是自己的账户)授权正确的数据库权限。根据我多年的程序设计教学经验,还没有哪个新手能一次性搞定这项任务。

以上就是准备数据库环境所需要的整个流程。相比之下,Access 几乎没有任何启动成本——我们甚至很难在 Access 搞砸什么东西,毕竟根本就没什么搞砸的空间。

虽然我们很难判断这种便捷性到底值多少钱,但不吹不黑,这种“够用就行”的感觉还真是挺美妙的。

这么看来,Access 拥有顽强生命力的原因就非常明确了。他就像个无人问津的酱油角色,只会在镜头的角落里像“僵尸”一般走来走去。但是,他同时又非常符合普通人的需求,允许我们在保持各种不良习惯的同时仍然能够解决问题而不惹出大乱子。只要没有合适的替代性工具,他就将继续以极低的复杂度继续为普通群众提供尽可能多的数据库功能。

虽然在高手眼中,这就是一套干啥啥不行、毫无亮点可言的平庸之作,但他仍然很好地完成了自己的使命——服务用户。所以真正的问题在于,我们是否愿意开发出另一款面向几乎所有用户的数据库工具,从而真正宣判 Access 的死刑?就目前来看,可能性很低。

https://medium.com/young-coder/microsoft-access-the-zombie-database-software-that-wont-die-5b09e389c166

点个在看少个 bug