Microsoft Access:永恒的数据库解决方案

发表时间: 2019-11-12 15:46

神译局是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为例,你(至少)需要完成以下步骤:

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

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

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

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

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

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

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

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

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

译者:boxi。