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