微软“杀”不死的数据库软件Access
- 2019-11-14 13:05:00
- Matthew MacDonald
- 转贴:
- CSDN
- 8079
作者 | Matthew MacDonald
译者 | 苏本如,责编 | 郭芮
以下为译文:
在万圣节,你可以讲这样一个万圣节的故事来吓唬一下普通的公司程序员。假想一下,如果你将宝贵的业务数据放在一个由科技巨头微软公司支持的友好数据库程序中,一开始,一切看起来都是那么地完美,但是你就是无法摆脱那种厄运即将来临的诡异的感觉。
接着,你的噩梦开始了。在只有三个人使用这些表格时,效果非常好。但是,当整个公司都加入进来使用时,一些神秘磨人的小故障就会接踵而来。你的老板让你构建一个Web界面,使得远程办公室可以使用数据库,但是你却发现——什么数据库也找不到,只有一个巨大的,没有灵魂的空洞,而那里应该有Web支持的。你想从它当中寻找你所期望的传统数据库的一些行为吗?别做梦了!想要安全模型吗?不,这里的每个用户都可以访问所有内容。想要数据完整性吗?还是醒醒吧,因为根本没有记录数据库操作的日志文件。想要遵守开发标准吗?别问,就此打住!看到这里时,你是不是觉得心都凉了!
然而,这些就是最让人寒心的吗?你想多了!就是这样的破东西甚至还要收你的费!
这就是Microsoft Access(以下简称Access)的故事。Access是一款使用方便的数据库软件,它已经有近30年的历史,但是至少在10年前,它就已经渐显老态。你可能认为Access早就死了,但是你错了。事实上,Access仍然像只僵尸一样踯躅而行,它的使用率既没有增长也没有下降。微软公司已经不止一次试图终止它的生命,然而它的用户社区却一次又一次成功地让它起死回生。而其他像FrontPage和Visual Basic 6这样的传统软件产品,却因为被人冷落而早已被掩没在尘埃之中。
将Access视为一个遗留软件噩梦,是显而易见的事。但是它的故事对每个软件设计师都有借鉴意义。它可以让我们洞察是什么让一个产品存活下来、茁壮成长,并且在它的生命周期结束后,仍然历时弥久,保持不死之身。
首先让我们澄清一件事:Access并没有死亡,而且也不会即将死亡。这似乎违背了数据库软件世界中所有合理的和被大家认可的公理,但是这是我们不得不接受的事实。
也就是说:Access挤进了DB-Engines的数据库排名的前十名,和它排在一起的同时还有许多功能非常强大的数据库。
这些统计数字几乎肯定夸大了Access的普及程度。许多企业使用不止一种类型的数据库软件,他们在Access上运行的应用程序几乎可以肯定范围更小,处理的数据更少,而且除非公司的掌舵人有自杀的倾向,否则他们不会把公司日常运营管理中至关重要的数据运行在Access数据库上。同样地,很多公司对一些他们正在使用的技术并不知情,比如说,每一个有WordPress网站的企业也都依赖MySQL数据库,即使这些数据库是其他公司为他们托管的。
对于Access数据库的隐性普及,我深有体会。在2009年,我一时兴起,写了一本关于Access的书。写这本书的理由很简单,多年来,我一直在使用Access来编写一些快速的、临时的数据解决方案,比如跟踪一组书籍,或者管理咨询工作中的发票和付款。所有这些场景都需要用到Excel不能提供的结构和数据编辑控件,这些都可以很容易地在Access数据库环境下找到。使用几张表,一些约束关系,一组小查询,一到两个报告,一个下午的时间就搞定了。
我写那本书的目的是为了记住我学到的技巧和避免重蹈覆辙,我相信那本书很快就会消失得无影无踪。但是令我惊讶的是,它居然成了我最受欢迎的书目之一。那本书销售至今都没有停止,现在大约每一天或两天都能卖出一本。显然,现在仍然有人对Access感兴趣,即使仅仅是因为他们需要解决上一代业余程序员留给他们的烂摊子。
微软试图杀死Access,但是失败了
但是不知道出于何种原因,当微软公司把屠刀指向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. 高级用户的需求缺口
高级用户可能是一个危险的群体。只需要给他们一点帮助,他们就可以制造出一种非常强大的武器来伤害到他们自己。他们具有我们必须重视的未开发潜力。为这一类的技术人员提供一种解决问题的方法,而不需要他们编写一页页的代码,他们就可以在这些方面有所作为,如自动化小任务,管理自己的数据孤岛,帮助他们保持本地环境的组织性和有效性。
如今,人们仍然渴望使用无代码或轻代码工具。那些工作积极的人们希望自己完成自己的工作,而不是为每一次数据库检索付费给昂贵的专业人员。但是到目前为止,我们提供给他们的唯一产品是上一代人使用的VBA宏语言和一些昂贵的工具,像PowerApps这种工具只有在你的企业注册了一堆微软云产品时才能够为你工作。
2. 真正的力量是赋予别人力量
下面是另一个在工作中使用 Access的例子。我的搭档需要跟踪一个有多个地点的小型音乐学校的家庭、学生、班级和出勤率。不存在多人同时编辑数据库的危险,也不需要将其他平台上查询数据。这种场景下,一个具备完全功能的SQL Server应用程序会更好用吗?答案是“是的”,甚至一个免费使用的SQL Server Express会更好用。但是,即使设计这样的应用程序是一项简单的任务,它也不是一天可以完成的事情。对于这个应用程序的用户来说,没有一种简单的方法可以像使用Access一样,可以用他们自己的表单和报表来实现并增强它。
3. 千万不要低估“就是好用”的价值
1.安装SQL Sever Express。确保所有的配置设置正确就位,以便数据库服务能在输入命令后正确启动。
2.下载SQL Server Management Studio,这样就不需要在命令行中使用SQL命令来创建数据库。
3.创建需要的数据库和表。(这部分几乎和Access一样简单!)
4.选择你的编程语言、数据库库和开发环境。也许你会选择一些类似Visual Studio Community这样的工具,它们会有助于将各部分连接到一起。
5.在你的代码中建立一个到你的数据库的连接。根据你采用的方法不同,你可以编写自己的代码或使用类似Entity Framework这样的代码生成工具。。
6.接下来真正的乐趣开始了。为了访问数据库,你需要向运行代码的账户(通常不是你自己的账户)授予正确的数据库访问权限。根据我多年的编程教学经验,这点从来都是给新手编程设置障碍的绊脚石。
上面这个步骤列表没有做任何实际的事情。它只是准备环境和配置Access所需要做的准备工作。如果将这些让Access能够工作起来所需要的成本进行比较的话,接下来,启动Access、创建一个数据库,并且让它工作,就是一件轻而易举之事。
尽管根据便利性很难给一个软件定价,但是那些“就是好用”的东西的吸引力已经让许多普通的技术一夜成名。
写在最后
它助长了一些坏习惯,这是事实;扩展它几乎会招致某种灾难,这也是事实;但是这些都无关重点。只要有人想要这样的一个工具,仅仅以少许的复杂性,就能给普通人带来那么多的力量,那么,Access尽管蹒跚难行,不受待见,并且几乎被它的创造者抛弃,但它仍然有其存在的价值。而摆在我们面前的真正的问题是:我们有勇气为了取代它而付出为每个人建立一个数据库工具包的代价吗?
- office课程播放地址及课程明细
- Excel Word PPT Access VBA等Office技巧学习平台
- 将( .accdb) 文件格式数据库转换为早期版本(.mdb)的文件格式
- 将早期的数据库文件格式(.mdb)转换为 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 数据库引擎和访问连接引擎以阻止对远程数据库的访问(remote table)
- Access 365 /Access 2019 数据库中哪些函数功能和属性被沙箱模式阻止(如未启动宏时)
- Access Runtime(运行时)最全的下载(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些电脑无法正常注册的解决办法(regsvr32注册时卡住)
- office使用部分控件时提示“您没有使用该ActiveX控件许可的问题”的解决方法
- RTF文件(富文本格式)的一些解析
- Access树控件(treeview) 64位Office下出现横向滚动条不会自动定位的解决办法
- Access中国树控件 在win10电脑 节点行间距太小的解决办法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 树控件 ListView列表等64位MSCOMMCTL.OCX控件下载
- VBA或VB6调用WebService(直接Post方式)并解析返回的XML
- 早期PB程序连接Sqlserver出现错误
- MMC 不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- sql server连接不了的解决办法
- localhost与127.0.0.1区别
- Roych的浅谈数据库开发系列(Sql Server)
- sqlserver 自动备份对备份目录没有存取权限的解决办法
- 安装Sql server 2005 express 和SQLServer2005 Express版企业管理器 SQLServer2005_SSMSEE
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |