关于ZAKER 融媒体解决方案 合作 加入

Microsoft Access:拥有不死之身的数据库

36氪 11-12

神译局是 36 氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:只要有过一点数据库概念的人几乎都接触过 Access。跟复杂的专业数据库相比,它简单易用,几乎不用做什么设置就能马上使用。但是另一方面它又极其受限,只要你想扩大一点使用范围就会遭遇各种状况。因此,它就像弗兰肯斯坦造出来的怪人,微软一直都想把自己的创造物给干掉。然而,它又像一个多少显得有点尴尬的僵尸,总会站在一场自己绝对不会被邀请的聚会的角落。是什么原因导致 Access 在强手林立的市场中拥有不死之身呢?Matthew MacDonald 为我们提供了他的见解,原文发表在 Medium 上,标题为:Microsoft Access: The Database Software That Won ’ t Die

给你们讲个万圣节故事,普通的企业程序员一定会被吓到。想象一下,你把公司宝贵的业务数据放进了由企业巨头微软支撑的一个的友好数据库程序里面。一开始一切看起来都很完美。但是,你却无法动摇那厄运将至的可怕感觉。

然后,那些迹象开始显露。当使用它们只有三个人时,这种形式工作得很好,不过当全公司都加入时,它们就会出现一些神秘的故障。老板要求你创建一个 Web 界面,好让远程办公室可以用这个数据库,结果你什么也没找到。在 web 本该出现的地方却是一片空白。你于是想找找常见数据库的成分。安全模型?(没有,每一个用户都能访问一切。)适当的数据完整性吗?(没有,因为没有记录数据库操作的日志文件。)开放标准吗?(问都不要问。)你感到毛骨悚然。

最恐怖的是什么?它甚至都不是免费的。

这就是 Microsoft Access 的故事,这是一种很容易使用的数据库软件,已有近 30 年的历史,至少在 10 年前就开始显示老态了。你可能以为 Access 早就完蛋了。但是你错了。实际上,Access 还在继续像僵尸一样挪动,它的使用率既没有增长也没有下降。微软已经不止一次尝试想要关停这款数据库,但是用户社区奋力抗争,成功地让它活了下来——哪怕 FrontPage、Visual Basic 6 等旧产品已被冷落并且埋进地下。

把 Access 鄙视成又一个遗留软件噩梦很容易。但是 Access 的故事给每一位软件设计师都提供了经验教训。它为我们可以洞悉让一款产品活下来,发展下去,然后在有效期过后仍能苟延残喘很久的秘密是什么。

Access 到底有多么受欢迎

我们得马上弄清楚一件事。Access 没有死,也不会死。这似乎违反了数据库软件世界所有合情合理的规矩,但这就是残酷的现实

数据研究公司始终发现这一点:尽管使用 Access 的公司不多,但都很忠诚。据 HG Insights 统计,目前有 14 万家公司在使用 Access,这个数字是使用更为专业的 SQL Server 的公司数的一半。Infoclutch 也有类似记录。而根据在搜索、社交媒体和 Stack Overflow 等网站上出现的频率来对数据库软件进行排名的 DB-Engines 则认为,Access 是全球第九大最受欢迎的数据库:

Access 跻身了 DB-Engines 数据库排行榜前十名,跟它一道的很多都是功能更强大的数据库

这些统计数据几乎肯定夸大了 Access 的普及度。很多企业会使用不止一种数据库软件,而且他们用来跑 Access 的应用几乎可以肯定适用范围是比较小的,处理的数据是比较少的,而且,除非 CEO 有死亡愿望,否则的话,Access 是决计不会用于日常运营的关键部分。另外,一些公司使用某些技术时根本没意识到自己用了那些技术也是真的。比方说,每个拥有 WordPress 网站的企业也都要依赖 MySQL,哪怕是别人替它们托管也要用到 MySQL。

我对 Access 隐秘的流行有自己的体验。2009 年,我写了一本关于 Access 的书。我写这本书的原因很简单。多年来,我一直在用 Access 来提供快速、临时的数据解决方案——比如跟踪藏书集,或者管理我咨询工作当中发生的发票、付款之类的事情。跟 Excel 相比,所有这些场景都需要更多的结构以及数据编辑控制,但是这些很容易就可以接受 Access 的环境限制。几张表,带有约束的一些关系,规模不大的查询集,再加上一两个报表——一个下午就能把工作搞定。

话虽如此,我从来都建议把 Access 数据库放到你的电子商务网站后面。如果你这样做的话,责任自负。

我写这本书是为了总结所学到的技巧和遇到的陷阱,当然这些东西很快就会消失不见,默默无闻。但令我感到惊讶的是,这笔书竟然成了我最受欢迎之一。销量还在继续增长,大概每天或每两天就能售出一本。显然,仍然有人对 Access 感兴趣,即使这仅仅是因为他们想要结束上一代业余程序员留下的混乱局面。

如何试着干掉一个程序(然后以失败告终)

做技术这一行的每个人都曾目睹过自己喜欢的软件最终寿终正寝的场面。被废弃的 Google 项目可以挤满一整个墓地。微软也以干掉自己的小孩而臭名昭著,有时甚至是一次就干掉几个,比方说,当它关停 Expression Studio 时,毙掉的可是跟 Adobe 竞争的一整个 web、设计以及媒体编码工具家族。

但是出于某种原因,当 Microsoft 盯上了 Access 之后,他们犹豫了。

第一个错误是他们没有像对待 Silverlight、PhotoDraw、Minecraft 以及许多其他工具一样,决定不一步到位毙掉 Access。相反,微软试图鼓励把 Access 变得无关紧要。首先,他们想通过忽视 Access 来让 Access 知难而退。距离 Office 2013 发布版还剩几个月时,微软甚至还没有给出是否还有 Access 2013 的官方回复。

然后他们开始自废武功,把旧的,有时仍然受欢迎的备用功能。比方说像导入 dBASE 之类旧格式的功能已经去掉了。创建数据透视表的能力也已经取消了。为 SQL Server 数据库创建 Access 前端的能力也没有了,还有把 Access 数据库迁移到 SQL Server 的升迁向导也去掉了。这简直就像是 Hostel 的噩梦。每次发布时,微软都会自卸 Access 一块,但程序仍然存在。

其中最引人注目的是微软试图提供一种摆脱 Access 世界的升级办法。很快,微软就建立了(然后又放弃了)三个以上的不同框架来把 Access 数据库放在 Web 上。其中的两个,Access Web 数据库(在 Access 2010 中引入)和 Access Web 应用(在 Access 2013 中引入)都是基于 SharePoint 和 SQL Server 开发的。但这两个均未取得成功,并且 Access 2019 成为了近十年来第一个完全没有 web 功能的版本。

接下来我们会介绍 Access 的一些在其他的被淘汰软件身上看不到的东西。我们观察到微软设法想提供退出 Access 的升级途径,然后遭遇失败,最后完全放弃。就像科学怪人造出来的那个怪物一样,创造者已经遗弃了自己的创造物,但依然无法干掉它。

Access 以及它的顽强生命所带来的经验教训

旧事物在技术的世界里阴魂不散并不出奇。毕竟,我们还有 COBOL。但是 Access 的不寻常之处在于,虽然生它出来它的公司并没有善待它,但是它仍然可以承受这一切。

是什么让 Access 在如此受限的情况仍然活得这么久?个中不乏文化和实用方面的原因,但有 3 点特别突出。

1. 超级用户鸿沟

Access 的受众是一批特殊的群体。这个群体现如今已经很少能成为目标受众了:那就是并非严肃编码者的技术人员。这批人弄个 Office 宏来绕开问题还行,但是他们缺乏正规的编程背景。不久前,我们还把这种人成为是 " 超级用户 "。

帮助超级用户可能会很危险。只需一点知识,你就能制造出非常强大的会射到自己脚的武器。但是这里面又蕴含着有巨大的待开发潜力。为技术人员提供一种无需编写代码即可解决问题的方法,让他们可以有所作为——把小型任务自动化,管理自己的数据孤岛,以及帮助保持其本地环境的组织性和有效性等等。

时至今日,对无代码或轻代码工具的需求依然很饥渴。对于可以避开每一个标点符号都要算钱的昂贵专业人士来完成自己的工作,那些人是有动力的。但是到目前为止,我们提供给他们的唯一产品是一代之前的 VBA 宏语言以及类似 PowerApps 这样的昂贵工具,只有在你的企业订阅了一堆微软的云产品之后才能用上那些东西。

2. 真正的强大在于给别人赋权

如果 Access 的成功有什么秘诀的话,那就是:Access 成功是因为它让大家感到自己的强大。

Access 的作用我们还可以举个例子。我的合伙人要为一所小型音乐学校跟踪家庭、学生、班级以及出勤情况。做这件事没有多人同时编辑数据库的危险,也无需将数据开放给其他平台。功能完善的 SQL Server 应用会更好吗?是的,我甚至可以用免费版的 SQL Server Express 做到这一点。但是,即便设计这样的应用是一项简单的任务,那也不是那种一天就能搞定的事情。而且,这种应用的用户并没有想使用 Access 一样简单的方法来用自建的表格和报表来增强爱应用。

3. 永远不要高估 " 就是这么管用 "

姑且设想一下,安装专业数据库解决方案都需要些什么。就以安装我刚刚提到的 SQL Server Express 为例,你(至少)需要完成以下步骤:

安装 SQL Sever Express。要确保若干配置设置都设置好了,这样数据库服务才能够正常启动。

下载 SQL Server Management Studio,这样你就不需要用命令行方式,通过 SQL 命令来创建数据库了。

创建数据库以及表。(这一部分几乎跟 Access 一样简单!)

选择一种编程语言,数据库的库以及开发环境。也许你会选择 Visual Studio Community 之类的东西,因为它把这些东西都打包在一起了。

在你的代码里面写连接到数据库的语句。根据做法的不同,你可能会自己写代码或者用类似 Entity Framework 之类的代码生成工具。

接下来才是有趣的开始。为了访问数据库,你需要给执行你的代码的账号(通常不是你自己的账号)授予正确的数据权限。根据我多年教别人编程的经验,对于编程菜鸟来说这几乎是个必定会导致他们摔跤的绊脚石。

上面这一系列的步骤其实什么都没做。那些只是准备环境所需要的步骤。把那些跟 Access 的启动成本比较一下。启动 Access、建立数据库之后,你想让它不工作都很难。

很难给便利性定价,但是东西 " 管用 " 的吸引力已经让许多一般般的技术变得一夜成名。

所以,为什么 Access 还没有死的答案很简单,那是因为一个多少显得有点尴尬的僵尸,站在一场自己绝对不会被邀请的聚会的角落。Access 适用于普通人。说它鼓励不良习惯,这是事实,扩大它的使用范围几乎可以肯定会引发灾难也是事实,但这些都无关紧要。只要没人愿意开发这样一种工具——赋予普通人那么大的能力,又把复杂性降到那么低的工具, Access 就会一直这么踉踉跄跄地走下去,尽管不受它的创建者待见和承认,但是仍然有它的使命。真正的问题是我们敢不敢开发一种服务于人人的数据库来取代它呢?

译者:boxi。

以上内容由"36氪"上传发布 查看原文

最新评论

没有更多评论了
36氪

36氪

让创业更简单

订阅

觉得文章不错,微信扫描分享好友

扫码分享

热门推荐

查看更多内容