Microsoft Access:擁有不死之身的數據庫

神譯局是36氪旗下編譯團隊,關注科技、商業、職場、生活等領域,重點介紹國外的新技術、新觀點、新風向。

編者按:只要有過一點數據庫概念的人幾乎都接觸過Access。跟複雜的專業數據庫相比,它簡單易用,幾乎不用做什麼設置就能馬上使用。但是另一方面它又極其受限,只要你想擴大一點使用範圍就會遭遇各種狀況。因此,它就像弗蘭肯斯坦造出來的怪人,微軟一直都想把自己的創造物給幹掉。然而,它又像一個多少顯得有點尷尬的殭屍,總會站在一場自己絕對不會被邀請的聚會的角落。是什麼原因導致Access在強手林立的市場中擁有不死之身呢?Matthew MacDonald為我們提供了他的見解,原文發表在Medium上,標題為:Microsoft Access: The Database Software That Won’t Die

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

給你們講個萬聖節故事,普通的企業程序員一定會被嚇到。想象一下,你把公司寶貴的業務數據放進了由企業巨頭微軟支撐的一個的友好數據庫程序裡面。一開始一切看起來都很完美。但是,你卻無法動搖那厄運將至的可怕感覺。

然後,那些跡象開始顯露。當使用它們只有三個人時,這種形式工作得很好,不過當全公司都加入時,它們就會出現一些神秘的故障。老闆要求你創建一個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是全球第九大最受歡迎的數據庫:

Microsoft 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就會一直這麼踉踉蹌蹌地走下去,儘管不受它的創建者待見和承認,但是仍然有它的使命。真正的問題是我們敢不敢開發一種服務於人人的數據庫來取代它呢?


分享到:


相關文章: