世界上使用最廣泛的軟件是哪個?
Windows ? Android? Office ?
都不對!
答案是SQLite !
你可能沒聽說過它,但是它就在你身邊的:
每一臺智能手機中(Android 和iOS)
每一臺Mac電腦中
每一臺Windows 10 電腦中
每一個主要的瀏覽器中(Chrome, Firefox, Safari)
大部分的機頂盒當中
每個PHP和Python安裝目錄中
很多流行的桌面應用(微信、QQ、 DropBox、 Skype、 iMessage、WhatsApp、 Adobe Acrobat Reader....)
不信的話可以在電腦中搜索一下 “*.db”,看看能發現多少個。
這個流行的軟件,就是我, Richard Hipp開發的。
每個流行的軟件都是為了解決一個痛點問題,SQLite也不例外。
故事要從2000年說起,當時我在為美國海軍的一個驅逐艦開發軟件,這個軟件要對船上所有的閥門進行管理和操作。
當時,美國海軍使用的是IBM的Informix數據庫,我寫的軟件需要通過網絡訪問它來讀取數據。
但是有時候Informix所在的服務器會掛掉,閥門管理軟件就會報錯:不能連接到服務器!
海軍對我的冤枉不算什么,但是驅逐艦是要上戰場的,打仗時如果受到損害網絡不通怎么辦?難道我的軟件就不能用了嗎?
當時紐特·金里奇和比爾·克林頓正在“打架”,所以所有政府合同都暫停執行,所以我失業了幾個月。
沒事可干, 我決定把這個嵌入式數據引擎給寫出來。
市面上的數據庫基本上都是Client-Server架構的, 它的特點是這樣:
但是我想寫的 嵌入式數據庫則是進程內通信,直接從本地硬盤中讀取文件,非常快
換句話說,每個程序都可以擁有一個本地的數據庫。
可是我并不是一個數據庫專家, 只是在大學中學過一個數據庫課程而已。
沒辦法,我只好去圖書館中借書,學習。
開發軟件肯定要選一門編程語言,我選擇偉大的C語言!
確定了語言,我開始做一些重要的系統設計,首先是如何存儲數據。
其次是應用程序如何訪問SQLite
當我在實現SQL層的時候,需要閱讀SQL標準,我發現SQL標準太繁雜了。
萬般無奈之下,我只好去看PostGres的文檔,作為處理SQL語句的參考。
最終的結果是, SQLite和Postgres的命令行有點像
SQLite 第一版本很快寫出來了,但是具有諷刺意味是,造船廠居然不用,他們還堅持使用Informix!
那就開源吧!我把它放到一個網站上,滿心期望引起世界的關注。
一年過去了,事情的發展往往不能如愿。
平心而論,SQLite第一個版本并不是真正的關系型數據庫,而是一個Hashing-based 數據庫。
我決定重寫,實現B+ Tree存儲引擎
2001年,911事件發生不久, SQLite v2 問世了。
很快,我接到了手機巨頭摩托羅拉的電話
我沒有想到,開源也能賺錢,這一單生意, 我賺了8萬美元。
隨后, 巨無霸AOL也拋來了橄欖枝。
2005年,當時的手機老大諾基亞也來了, 他們也想為手機找個數據庫。
他們很謹慎,找了10個數據庫做橫向對比測評,最后SQLite輕松勝出。
SQLite被用的越來越多,發展勢頭越來越好。
只不過SQLite的開發者主要是我,這讓客戶有點擔心
而我的SQLite ,Bus Factor 等于1!怪不得客戶著急了。
為了保證SQLite能長期的發展下去,需要更多業界人士參與SQLite開發, 客戶希望我建立一個SQLite聯盟。
在Mozilla 基金會的負責人米切爾·貝克的幫助下,Mozilla、 Symbian、Adobe成為了聯盟的初始成員
SQLite 重新進入了發展的快車道,2005年,一個叫Android的東西向我拋來了橄欖枝。
這玩意兒可編程性、可調試性非常強,并且操作系統很容易更新,每天都可以更新幾次。
Android最早期的原型機是這樣的。
我意識到這是個爆炸性的東西, 但是出于保密協議,我沒法通知諾基亞和摩托羅拉它們。
它們將被智能手機無情地碾壓。
這時候我的SQLite數據庫已經很火爆了,我的軟件咨詢公司不得不雇傭了幾個人來做技術支持。
我對自己的代碼非常自信, 天真地四處吹噓SQLite沒有任何嚴重Bug,但是當它發布到海量的移動設備上時,潛藏的Bug出現了。
這對我的自尊心造成了很大的傷害,我決心把SQLite的質量提上去。達到航空電子設備的質量!
而航空電子設備的質量至少要實現MC/DC這個苛刻的標準 !
我開始編寫測試,達到100%的MC/DC , 這花了我一年的時間,每周60個小時!這真是非常、非常、非常艱難的工作。
實際上,想達到95%的覆蓋率并不是特別難,但是剩下的5%實在是太難了。
艱苦的付出獲得了極為豐厚的回報, 從那以后,Android再也不找我麻煩了。
我付出了艱苦的努力,讓SQLite成了世界上最流行的數據庫。
這一切都很難,但是和說服Ginger G. Wyrick 嫁給我相比,SQLite不算什么。
Ginger 是一個音樂家和作家,美麗又才華橫溢。
我很愛她,一結婚就把公司名稱變成了 Hipp, Wyrick & Company, 并且把公司所有的股份送給了她。
這個公司只有兩個人,她是CEO 和COO, 而我,則是唯一的程序員。
最后,總結一下SQLite為什么能成功吧。
首先,它是一個可靠的、穩定的數據庫,對事務的支持,讓它在應用崩潰時也不會丟失任何數據。這比你自己操作XML,JSON等文件要可靠得多。
其次,它可以輕松地嵌入到任何語言寫的系統中。
最后,它開箱即用,非常簡單!
全文完,覺得不錯的話點個贊或者在看吧!
近期爆文:
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.