我開發了世界上最流行的數據庫SQLite,并把100%的股份送給了老婆!
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
世界上使用最廣泛的軟件是哪個? Windows ? Android? Office ? 都不對! 答案是 SQLite !
你可能沒聽說過它,但是它就在你身邊的:
不信的話可以在電腦中搜索一下 “*.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等文件要可靠得多。 其次,它可以輕松地嵌入到任何語言寫的系統中。 最后,它開箱即用,非常簡單! 全文完,覺得不錯的話點個贊或者在看吧! 本文作者 劉欣,著有暢銷書《碼農翻身》《半小時漫畫計算機》,前IBM架構師,領導過多個企業應用架構設計和開發工作;洞察技術本質,擅長用故事去講解復雜技術。 該文章在 2024/11/11 14:46:59 編輯過 |
關鍵字查詢
相關文章
正在查詢... |