我開發(fā)了世界上最流行的數(shù)據(jù)庫SQLite,并把100%的股份送給了老婆!
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
世界上使用最廣泛的軟件是哪個? Windows ? Android? Office ? 都不對! 答案是 SQLite !
你可能沒聽說過它,但是它就在你身邊的:
不信的話可以在電腦中搜索一下 “*.db”,看看能發(fā)現(xiàn)多少個。 這個流行的軟件,就是我, Richard Hipp開發(fā)的。
每個流行的軟件都是為了解決一個痛點(diǎn)問題,SQLite也不例外。 故事要從2000年說起,當(dāng)時我在為美國海軍的一個驅(qū)逐艦開發(fā)軟件,這個軟件要對船上所有的閥門進(jìn)行管理和操作。
當(dāng)時,美國海軍使用的是IBM的Informix數(shù)據(jù)庫,我寫的軟件需要通過網(wǎng)絡(luò)訪問它來讀取數(shù)據(jù)。 但是有時候Informix所在的服務(wù)器會掛掉,閥門管理軟件就會報錯:不能連接到服務(wù)器!
海軍對我的冤枉不算什么,但是驅(qū)逐艦是要上戰(zhàn)場的,打仗時如果受到損害網(wǎng)絡(luò)不通怎么辦?難道我的軟件就不能用了嗎?
當(dāng)時紐特·金里奇和比爾·克林頓正在“打架”,所以所有政府合同都暫停執(zhí)行,所以我失業(yè)了幾個月。 沒事可干, 我決定把這個嵌入式數(shù)據(jù)引擎給寫出來。 市面上的數(shù)據(jù)庫基本上都是Client-Server架構(gòu)的, 它的特點(diǎn)是這樣:
但是我想寫的嵌入式數(shù)據(jù)庫則是進(jìn)程內(nèi)通信,直接從本地硬盤中讀取文件,非???/span>
換句話說,每個程序都可以擁有一個本地的數(shù)據(jù)庫。 可是我并不是一個數(shù)據(jù)庫專家, 只是在大學(xué)中學(xué)過一個數(shù)據(jù)庫課程而已。 沒辦法,我只好去圖書館中借書,學(xué)習(xí)。
開發(fā)軟件肯定要選一門編程語言,我選擇偉大的C語言!
確定了語言,我開始做一些重要的系統(tǒng)設(shè)計,首先是如何存儲數(shù)據(jù)。
其次是應(yīng)用程序如何訪問SQLite
當(dāng)我在實(shí)現(xiàn)SQL層的時候,需要閱讀SQL標(biāo)準(zhǔn),我發(fā)現(xiàn)SQL標(biāo)準(zhǔn)太繁雜了。
萬般無奈之下,我只好去看PostGres的文檔,作為處理SQL語句的參考。 最終的結(jié)果是, SQLite和Postgres的命令行有點(diǎn)像
SQLite 第一版本很快寫出來了,但是具有諷刺意味是,造船廠居然不用,他們還堅持使用Informix! 那就開源吧!我把它放到一個網(wǎng)站上,滿心期望引起世界的關(guān)注。 一年過去了,事情的發(fā)展往往不能如愿。
平心而論,SQLite第一個版本并不是真正的關(guān)系型數(shù)據(jù)庫,而是一個Hashing-based 數(shù)據(jù)庫。 我決定重寫,實(shí)現(xiàn)B+ Tree存儲引擎
2001年,911事件發(fā)生不久, SQLite v2 問世了。 很快,我接到了手機(jī)巨頭摩托羅拉的電話
我沒有想到,開源也能賺錢,這一單生意, 我賺了8萬美元。 隨后, 巨無霸AOL也拋來了橄欖枝。
2005年,當(dāng)時的手機(jī)老大諾基亞也來了, 他們也想為手機(jī)找個數(shù)據(jù)庫。 他們很謹(jǐn)慎,找了10個數(shù)據(jù)庫做橫向?qū)Ρ葴y評,最后SQLite輕松勝出。
SQLite被用的越來越多,發(fā)展勢頭越來越好。 只不過SQLite的開發(fā)者主要是我,這讓客戶有點(diǎn)擔(dān)心。
而我的SQLite , Bus Factor 等于1 !怪不得客戶著急了。 為了保證SQLite能長期的發(fā)展下去,需要更多業(yè)界人士參與SQLite開發(fā), 客戶希望我建立一個SQLite聯(lián)盟。 在Mozilla 基金會的負(fù)責(zé)人米切爾·貝克的幫助下,Mozilla、 Symbian、Adobe成為了聯(lián)盟的初始成員。
SQLite 重新進(jìn)入了發(fā)展的快車道,2005年,一個叫Android的東西向我拋來了橄欖枝。 這玩意兒可編程性、可調(diào)試性非常強(qiáng),并且操作系統(tǒng)很容易更新,每天都可以更新幾次。 Android最早期的原型機(jī)是這樣的。
我意識到這是個爆炸性的東西, 但是出于保密協(xié)議,我沒法通知諾基亞和摩托羅拉它們。 它們將被智能手機(jī)無情地碾壓。 這時候我的SQLite數(shù)據(jù)庫已經(jīng)很火爆了,我的軟件咨詢公司不得不雇傭了幾個人來做技術(shù)支持。
我對自己的代碼非常自信, 天真地四處吹噓SQLite沒有任何嚴(yán)重Bug,但是當(dāng)它發(fā)布到海量的移動設(shè)備上時,潛藏的Bug出現(xiàn)了。
這對我的自尊心造成了很大的傷害,我決心把SQLite的質(zhì)量提上去。達(dá)到航空電子設(shè)備的質(zhì)量! 而航空電子設(shè)備的質(zhì)量至少要實(shí)現(xiàn)MC/DC這個苛刻的標(biāo)準(zhǔn) !
我開始編寫測試,達(dá)到100%的MC/DC , 這花了我一年的時間,每周60個小時!這真是非常、非常、非常艱難的工作。
實(shí)際上,想達(dá)到95%的覆蓋率并不是特別難,但是剩下的5%實(shí)在是太難了。 艱苦的付出獲得了極為豐厚的回報, 從那以后,Android再也不找我麻煩了。
我付出了艱苦的努力,讓SQLite成了世界上最流行的數(shù)據(jù)庫。 這一切都很難,但是和說服Ginger G. Wyrick 嫁給我相比,SQLite不算什么。 Ginger 是一個音樂家和作家,美麗又才華橫溢。 ? 我很愛她,一結(jié)婚就把公司名稱變成了 Hipp, Wyrick & Company, 并且把公司所有的股份送給了她。 這個公司只有兩個人,她是CEO 和COO, 而我,則是唯一的程序員。 最后,總結(jié)一下SQLite為什么能成功吧。 首先,它是一個可靠的、穩(wěn)定的數(shù)據(jù)庫,對事務(wù)的支持,讓它在應(yīng)用崩潰時也不會丟失任何數(shù)據(jù)。這比你自己操作XML,JSON等文件要可靠得多。 其次,它可以輕松地嵌入到任何語言寫的系統(tǒng)中。 最后,它開箱即用,非常簡單! 全文完,覺得不錯的話點(diǎn)個贊或者在看吧! 本文作者 劉欣,著有暢銷書《碼農(nóng)翻身》《半小時漫畫計算機(jī)》,前IBM架構(gòu)師,領(lǐng)導(dǎo)過多個企業(yè)應(yīng)用架構(gòu)設(shè)計和開發(fā)工作;洞察技術(shù)本質(zhì),擅長用故事去講解復(fù)雜技術(shù)。 該文章在 2024/11/11 14:46:59 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |