微軟“殺”不死的數據庫軟件Access

2019-11-14 13:05:00
Matthew MacDonald
轉貼:
CSDN
243

作者 | 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盡管蹣跚難行,不受待見,并且幾乎被它的創造者拋棄,但它仍然有其存在的價值。而擺在我們面前的真正的問題是:我們有勇氣為了取代它而付出為每個人建立一個數據庫工具包的代價嗎?

分享
北京十一选五基本走势