只要有過(guò)一點(diǎn)數(shù)據(jù)庫(kù)概念的人幾乎都接觸過(guò)Access。跟復(fù)雜的專業(yè)數(shù)據(jù)庫(kù)相比,它簡(jiǎn)單易用,幾乎不用做什么設(shè)置就能馬上使用。但是另一方面它又極其受限,只要你想擴(kuò)大一點(diǎn)使用范圍就會(huì)遭遇各種狀況。因此,它就像弗蘭肯斯坦造出來(lái)的怪人,微軟一直都想把自己的創(chuàng)造物給干掉。然而,它又像一個(gè)多少顯得有點(diǎn)尷尬的僵尸,總會(huì)站在一場(chǎng)自己絕對(duì)不會(huì)被邀請(qǐng)的聚會(huì)的角落。是什么原因?qū)е翧ccess在強(qiáng)手林立的市場(chǎng)中擁有不死之身呢?Matthew MacDonald為我們提供了他的見(jiàn)解,原文發(fā)表在Medium上,標(biāo)題為:Microsoft Access: The Database Software That Won’t Die
給你們講個(gè)萬(wàn)圣節(jié)故事,普通的企業(yè)程序員一定會(huì)被嚇到。想象一下,你把公司寶貴的業(yè)務(wù)數(shù)據(jù)放進(jìn)了由企業(yè)巨頭微軟支撐的一個(gè)的友好數(shù)據(jù)庫(kù)程序里面。一開(kāi)始一切看起來(lái)都很完美。但是,你卻無(wú)法動(dòng)搖那厄運(yùn)將至的可怕感覺(jué)。
然后,那些跡象開(kāi)始顯露。當(dāng)使用它們只有三個(gè)人時(shí),這種形式工作得很好,不過(guò)當(dāng)全公司都加入時(shí),它們就會(huì)出現(xiàn)一些神秘的故障。老板要求你創(chuàng)建一個(gè)Web界面,好讓遠(yuǎn)程辦公室可以用這個(gè)數(shù)據(jù)庫(kù),結(jié)果你什么也沒(méi)找到。在web本該出現(xiàn)的地方卻是一片空白。你于是想找找常見(jiàn)數(shù)據(jù)庫(kù)的成分。安全模型?(沒(méi)有,每一個(gè)用戶都能訪問(wèn)一切。)適當(dāng)?shù)臄?shù)據(jù)完整性嗎?(沒(méi)有,因?yàn)闆](méi)有記錄數(shù)據(jù)庫(kù)操作的日志文件。)開(kāi)放標(biāo)準(zhǔn)嗎?(問(wèn)都不要問(wèn)。)你感到毛骨悚然。
最恐怖的是什么?它甚至都不是免費(fèi)的。
這就是Microsoft Access的故事,這是一種很容易使用的數(shù)據(jù)庫(kù)軟件,已有近30年的歷史,至少在10年前就開(kāi)始顯示老態(tài)了。你可能以為Access早就完蛋了。但是你錯(cuò)了。實(shí)際上,Access還在繼續(xù)像僵尸一樣挪動(dòng),它的使用率既沒(méi)有增長(zhǎng)也沒(méi)有下降。微軟已經(jīng)不止一次嘗試想要關(guān)停這款數(shù)據(jù)庫(kù),但是用戶社區(qū)奮力抗?fàn)?,成功地讓它活了下?lái)——哪怕FrontPage、Visual Basic 6等舊產(chǎn)品已被冷落并且埋進(jìn)地下。
把Access鄙視成又一個(gè)遺留軟件噩夢(mèng)很容易。但是Access的故事給每一位軟件設(shè)計(jì)師都提供了經(jīng)驗(yàn)教訓(xùn)。它為我們可以洞悉讓一款產(chǎn)品活下來(lái),發(fā)展下去,然后在有效期過(guò)后仍能茍延殘喘很久的秘密是什么。
Access到底有多么受歡迎
我們得馬上弄清楚一件事。Access沒(méi)有死,也不會(huì)死。這似乎違反了數(shù)據(jù)庫(kù)軟件世界所有合情合理的規(guī)矩,但這就是殘酷的現(xiàn)實(shí)
數(shù)據(jù)研究公司始終發(fā)現(xiàn)這一點(diǎn):盡管使用Access的公司不多,但都很忠誠(chéng)。據(jù)HG Insights統(tǒng)計(jì),目前有14萬(wàn)家公司在使用Access,這個(gè)數(shù)字是使用更為專業(yè)的SQL Server 的公司數(shù)的一半。Infoclutch 也有類似記錄。而根據(jù)在搜索、社交媒體和Stack Overflow等網(wǎng)站上出現(xiàn)的頻率來(lái)對(duì)數(shù)據(jù)庫(kù)軟件進(jìn)行排名的DB-Engines則認(rèn)為,Access是全球第九大最受歡迎的數(shù)據(jù)庫(kù):
Access躋身了DB-Engines數(shù)據(jù)庫(kù)排行榜前十名,跟它一道的很多都是功能更強(qiáng)大的數(shù)據(jù)庫(kù)
這些統(tǒng)計(jì)數(shù)據(jù)幾乎肯定夸大了Access的普及度。很多企業(yè)會(huì)使用不止一種數(shù)據(jù)庫(kù)軟件,而且他們用來(lái)跑Access的應(yīng)用幾乎可以肯定適用范圍是比較小的,處理的數(shù)據(jù)是比較少的,而且,除非CEO有死亡愿望,否則的話,Access是決計(jì)不會(huì)用于日常運(yùn)營(yíng)的關(guān)鍵部分。另外,一些公司使用某些技術(shù)時(shí)根本沒(méi)意識(shí)到自己用了那些技術(shù)也是真的。比方說(shuō),每個(gè)擁有WordPress網(wǎng)站的企業(yè)也都要依賴MySQL,哪怕是別人替它們托管也要用到MySQL。
我對(duì)Access隱秘的流行有自己的體驗(yàn)。2009年,我寫(xiě)了一本關(guān)于Access的書(shū)。我寫(xiě)這本書(shū)的原因很簡(jiǎn)單。多年來(lái),我一直在用Access來(lái)提供快速、臨時(shí)的數(shù)據(jù)解決方案——比如跟蹤藏書(shū)集,或者管理我咨詢工作當(dāng)中發(fā)生的發(fā)票、付款之類的事情。跟Excel相比,所有這些場(chǎng)景都需要更多的結(jié)構(gòu)以及數(shù)據(jù)編輯控制,但是這些很容易就可以接受Access的環(huán)境限制。幾張表,帶有約束的一些關(guān)系,規(guī)模不大的查詢集,再加上一兩個(gè)報(bào)表——一個(gè)下午就能把工作搞定。
話雖如此,我從來(lái)都建議把Access數(shù)據(jù)庫(kù)放到你的電子商務(wù)網(wǎng)站后面。如果你這樣做的話,責(zé)任自負(fù)。
我寫(xiě)這本書(shū)是為了總結(jié)所學(xué)到的技巧和遇到的陷阱,當(dāng)然這些東西很快就會(huì)消失不見(jiàn),默默無(wú)聞。但令我感到驚訝的是,這筆書(shū)竟然成了我最受歡迎之一。銷量還在繼續(xù)增長(zhǎng),大概每天或每?jī)商炀湍苁鄢鲆槐尽o@然,仍然有人對(duì)Access感興趣,即使這僅僅是因?yàn)樗麄兿胍Y(jié)束上一代業(yè)余程序員留下的混亂局面。
如何試著干掉一個(gè)程序(然后以失敗告終)
做技術(shù)這一行的每個(gè)人都曾目睹過(guò)自己喜歡的軟件最終壽終正寢的場(chǎng)面。被廢棄的Google項(xiàng)目可以擠滿一整個(gè)墓地。微軟也以干掉自己的小孩而臭名昭著,有時(shí)甚至是一次就干掉幾個(gè),比方說(shuō),當(dāng)它關(guān)停Expression Studio時(shí),斃掉的可是跟Adobe競(jìng)爭(zhēng)的一整個(gè)web、設(shè)計(jì)以及媒體編碼工具家族。
但是出于某種原因,當(dāng)Microsoft盯上了Access之后,他們猶豫了。
第一個(gè)錯(cuò)誤是他們沒(méi)有像對(duì)待Silverlight、PhotoDraw、Minecraft 以及許多其他工具一樣,決定不一步到位斃掉Access。相反,微軟試圖鼓勵(lì)把Access變得無(wú)關(guān)緊要。首先,他們想通過(guò)忽視Access來(lái)讓Access知難而退。距離Office 2013發(fā)布版還剩幾個(gè)月時(shí),微軟甚至還沒(méi)有給出是否還有Access 2013的官方回復(fù)。
然后他們開(kāi)始自廢武功,把舊的,有時(shí)仍然受歡迎的備用功能。比方說(shuō)像導(dǎo)入dBASE之類舊格式的功能已經(jīng)去掉了。創(chuàng)建數(shù)據(jù)透視表的能力也已經(jīng)取消了。為SQL Server數(shù)據(jù)庫(kù)創(chuàng)建Access前端的能力也沒(méi)有了,還有把Access數(shù)據(jù)庫(kù)遷移到SQL Server 的升遷向?qū)б踩サ袅恕_@簡(jiǎn)直就像是Hostel的噩夢(mèng)。每次發(fā)布時(shí),微軟都會(huì)自卸Access一塊,但程序仍然存在。
其中最引人注目的是微軟試圖提供一種擺脫Access世界的升級(jí)辦法。很快,微軟就建立了(然后又放棄了)三個(gè)以上的不同框架來(lái)把Access數(shù)據(jù)庫(kù)放在Web上。其中的兩個(gè),Access Web數(shù)據(jù)庫(kù)(在Access 2010中引入)和Access Web應(yīng)用(在Access 2013中引入)都是基于SharePoint和SQL Server開(kāi)發(fā)的。但這兩個(gè)均未取得成功,并且Access 2019成為了近十年來(lái)第一個(gè)完全沒(méi)有web功能的版本。
接下來(lái)我們會(huì)介紹Access的一些在其他的被淘汰軟件身上看不到的東西。我們觀察到微軟設(shè)法想提供退出Access的升級(jí)途徑,然后遭遇失敗,最后完全放棄。就像科學(xué)怪人造出來(lái)的那個(gè)怪物一樣,創(chuàng)造者已經(jīng)遺棄了自己的創(chuàng)造物,但依然無(wú)法干掉它。
Access以及它的頑強(qiáng)生命所帶來(lái)的經(jīng)驗(yàn)教訓(xùn)
舊事物在技術(shù)的世界里陰魂不散并不出奇。畢竟,我們還有COBOL。但是Access的不尋常之處在于,雖然生它出來(lái)它的公司并沒(méi)有善待它,但是它仍然可以承受這一切。
是什么讓Access在如此受限的情況仍然活得這么久?個(gè)中不乏文化和實(shí)用方面的原因,但有3點(diǎn)特別突出。
1、超級(jí)用戶鴻溝
Access的受眾是一批特殊的群體。這個(gè)群體現(xiàn)如今已經(jīng)很少能成為目標(biāo)受眾了:那就是并非嚴(yán)肅編碼者的技術(shù)人員。這批人弄個(gè)Office宏來(lái)繞開(kāi)問(wèn)題還行,但是他們?nèi)狈φ?guī)的編程背景。不久前,我們還把這種人成為是“超級(jí)用戶”。
幫助超級(jí)用戶可能會(huì)很危險(xiǎn)。只需一點(diǎn)知識(shí),你就能制造出非常強(qiáng)大的會(huì)射到自己腳的武器。但是這里面又蘊(yùn)含著有巨大的待開(kāi)發(fā)潛力。為技術(shù)人員提供一種無(wú)需編寫(xiě)代碼即可解決問(wèn)題的方法,讓他們可以有所作為——把小型任務(wù)自動(dòng)化,管理自己的數(shù)據(jù)孤島,以及幫助保持其本地環(huán)境的組織性和有效性等等。
時(shí)至今日,對(duì)無(wú)代碼或輕代碼工具的需求依然很饑渴。對(duì)于可以避開(kāi)每一個(gè)標(biāo)點(diǎn)符號(hào)都要算錢(qián)的昂貴專業(yè)人士來(lái)完成自己的工作,那些人是有動(dòng)力的。但是到目前為止,我們提供給他們的唯一產(chǎn)品是一代之前的VBA宏語(yǔ)言以及類似PowerApps這樣的昂貴工具,只有在你的企業(yè)訂閱了一堆微軟的云產(chǎn)品之后才能用上那些東西。
2、真正的強(qiáng)大在于給別人賦權(quán)
如果Access的成功有什么秘訣的話,那就是:Access成功是因?yàn)樗尨蠹腋械阶约旱膹?qiáng)大。
Access的作用我們還可以舉個(gè)例子。我的合伙人要為一所小型音樂(lè)學(xué)校跟蹤家庭、學(xué)生、班級(jí)以及出勤情況。做這件事沒(méi)有多人同時(shí)編輯數(shù)據(jù)庫(kù)的危險(xiǎn),也無(wú)需將數(shù)據(jù)開(kāi)放給其他平臺(tái)。功能完善的SQL Server應(yīng)用會(huì)更好嗎?是的,我甚至可以用免費(fèi)版的SQL Server Express做到這一點(diǎn)。但是,即便設(shè)計(jì)這樣的應(yīng)用是一項(xiàng)簡(jiǎn)單的任務(wù),那也不是那種一天就能搞定的事情。而且,這種應(yīng)用的用戶并沒(méi)有想使用Access一樣簡(jiǎn)單的方法來(lái)用自建的表格和報(bào)表來(lái)增強(qiáng)愛(ài)應(yīng)用。
3、永遠(yuǎn)不要高估“就是這么管用”
姑且設(shè)想一下,安裝專業(yè)數(shù)據(jù)庫(kù)解決方案都需要些什么。就以安裝我剛剛提到的SQL Server Express為例,你(至少)需要完成以下步驟:
安裝SQL Sever Express。要確保若干配置設(shè)置都設(shè)置好了,這樣數(shù)據(jù)庫(kù)服務(wù)才能夠正常啟動(dòng)。
下載SQL Server Management Studio,這樣你就不需要用命令行方式,通過(guò)SQL命令來(lái)創(chuàng)建數(shù)據(jù)庫(kù)了。
創(chuàng)建數(shù)據(jù)庫(kù)以及表。(這一部分幾乎跟Access一樣簡(jiǎn)單?。?/p>
選擇一種編程語(yǔ)言,數(shù)據(jù)庫(kù)的庫(kù)以及開(kāi)發(fā)環(huán)境。也許你會(huì)選擇Visual Studio Community之類的東西,因?yàn)樗堰@些東西都打包在一起了。
在你的代碼里面寫(xiě)連接到數(shù)據(jù)庫(kù)的語(yǔ)句。根據(jù)做法的不同,你可能會(huì)自己寫(xiě)代碼或者用類似Entity Framework之類的代碼生成工具。
接下來(lái)才是有趣的開(kāi)始。為了訪問(wèn)數(shù)據(jù)庫(kù),你需要給執(zhí)行你的代碼的賬號(hào)(通常不是你自己的賬號(hào))授予正確的數(shù)據(jù)權(quán)限。根據(jù)我多年教別人編程的經(jīng)驗(yàn),對(duì)于編程菜鳥(niǎo)來(lái)說(shuō)這幾乎是個(gè)必定會(huì)導(dǎo)致他們摔跤的絆腳石。
上面這一系列的步驟其實(shí)什么都沒(méi)做。那些只是準(zhǔn)備環(huán)境所需要的步驟。把那些跟Access的啟動(dòng)成本比較一下。啟動(dòng)Access、建立數(shù)據(jù)庫(kù)之后,你想讓它不工作都很難。
很難給便利性定價(jià),但是東西“管用”的吸引力已經(jīng)讓許多一般般的技術(shù)變得一夜成名。
所以,為什么Access還沒(méi)有死的答案很簡(jiǎn)單,那是因?yàn)橐粋€(gè)多少顯得有點(diǎn)尷尬的僵尸,站在一場(chǎng)自己絕對(duì)不會(huì)被邀請(qǐng)的聚會(huì)的角落。Access適用于普通人。說(shuō)它鼓勵(lì)不良習(xí)慣,這是事實(shí),擴(kuò)大它的使用范圍幾乎可以肯定會(huì)引發(fā)災(zāi)難也是事實(shí),但這些都無(wú)關(guān)緊要。只要沒(méi)人愿意開(kāi)發(fā)這樣一種工具——賦予普通人那么大的能力,又把復(fù)雜性降到那么低的工具, Access就會(huì)一直這么踉踉蹌蹌地走下去,盡管不受它的創(chuàng)建者待見(jiàn)和承認(rèn),但是仍然有它的使命。真正的問(wèn)題是我們敢不敢開(kāi)發(fā)一種服務(wù)于人人的數(shù)據(jù)庫(kù)來(lái)取代它呢?
責(zé)任編輯:lw
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3846瀏覽量
64685 -
辦公軟件
+關(guān)注
關(guān)注
0文章
22瀏覽量
7714 -
系統(tǒng)設(shè)計(jì)師
+關(guān)注
關(guān)注
0文章
3瀏覽量
5481
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論