微软“杀”不死的数据库软件Access

2019-11-14 13:05:00
Matthew MacDonald
转贴:
CSDN
160

作者 | 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之外给它提供一个升级路径,但是失败了,最后它被迫完全放弃。这就像弗兰肯斯坦的怪物一样,造物主抛弃了他的创造物,但是却无法杀死它。


Access和它的持久生命力向我们揭示了什么?


老旧的软件系统在技术领域长久存留并不是一件令人惊讶的事。毕竟,我们现在还有人在使用COBOL。但是Access的不寻常之处在于,尽管受到了创建它的公司的恶意地忽视,但是它依然经久不衰。


是什么原因让Access可以无视它的局限性而如此经久不衰呢?这里面有文化和实践两方面的原因,但以下三个原因更为突出。


1. 高级用户的需求缺口


Access的受众是一个特殊的群体,软件开发很少以他们作为目标受众:这些人属于技术人员,但是又不是真正的代码编写者,他们可能知道如何绕过office宏,但是他们又没有正式的编程背景。在不算久远的那个时代,我们称这些人为“power user(高级用户)”。

高级用户可能是一个危险的群体。只需要给他们一点帮助,他们就可以制造出一种非常强大的武器来伤害到他们自己。他们具有我们必须重视的未开发潜力。为这一类的技术人员提供一种解决问题的方法,而不需要他们编写一页页的代码,他们就可以在这些方面有所作为,如自动化小任务,管理自己的数据孤岛,帮助他们保持本地环境的组织性和有效性。


如今,人们仍然渴望使用无代码或轻代码工具。那些工作积极的人们希望自己完成自己的工作,而不是为每一次数据库检索付费给昂贵的专业人员。但是到目前为止,我们提供给他们的唯一产品是上一代人使用的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适合于普通人。

它助长了一些坏习惯,这是事实;扩展它几乎会招致某种灾难,这也是事实;但是这些都无关重点。只要有人想要这样的一个工具,仅仅以少许的复杂性,就能给普通人带来那么多的力量,那么,Access尽管蹒跚难行,不受待见,并且几乎被它的创造者抛弃,但它仍然有其存在的价值。而摆在我们面前的真正的问题是:我们有勇气为了取代它而付出为每个人建立一个数据库工具包的代价吗?

分享