國產(chǎn)數(shù)據(jù)庫擁抱開源沒毛病
?今天下午要參加一個(gè)開源方面的研討會(huì),所以這兩天考慮開源的事情比較多。在國產(chǎn)數(shù)據(jù)庫領(lǐng)域,被詬病得比較深的就是開源和套殼。在不少數(shù)據(jù)庫產(chǎn)業(yè)從業(yè)者和用戶眼里,開源和套殼是一碼事,是受到大家排斥的。似乎只有完全自主研發(fā)的數(shù)據(jù)庫產(chǎn)品才能算是真正的國產(chǎn)數(shù)據(jù)庫。
我的觀點(diǎn)可能無法代表這些人,因?yàn)槲业目捶ㄊ墙厝徊煌摹W蛱煳乙舱f過,數(shù)據(jù)庫產(chǎn)品研發(fā)是要奉行長期主義的,沒有十年二十年的沉淀是無法開發(fā)出一款成熟的數(shù)據(jù)庫產(chǎn)品的。如果你準(zhǔn)備今天開始,花上五年時(shí)間從0開始做一個(gè)數(shù)據(jù)庫產(chǎn)品的研發(fā),再用五年時(shí)間在市場上推廣與打磨,二十年后你的企業(yè)可能可以開始盈利。我想很難讓資本能夠青睞你,而你自己掏腰包拿出幾個(gè)億甚至十幾個(gè)億來打造這樣一個(gè)產(chǎn)品,有沒有可能呢?有沒有用戶可能為你當(dāng)?shù)谝粋€(gè)用戶,品嘗一把數(shù)據(jù)庫小白鼠的味道呢?可以想見,完全自研的道路肯定是十分艱辛的。國內(nèi)也真的有這樣的老牌數(shù)據(jù)庫企業(yè),二十多年磨練出了一個(gè)自主研發(fā)的數(shù)據(jù)庫產(chǎn)品,正好借著信創(chuàng)的東風(fēng),開始起飛了。不過如果你從現(xiàn)在開始重復(fù)這個(gè)故事,那注定是更加艱辛的。
開源社區(qū)以豐富的用戶資源,大量的貢獻(xiàn)者,可以大大縮短數(shù)據(jù)庫產(chǎn)品的研發(fā)周期,如果完全依靠自主研發(fā),自行營銷,一款產(chǎn)品可能需要十多年的打磨,那么現(xiàn)在在廣大的開源社區(qū)用戶的幫助下,打造一款成熟的開源數(shù)據(jù)庫產(chǎn)品可能只需要3-5年時(shí)間。如果你利用開源生態(tài)來開發(fā)數(shù)據(jù)庫產(chǎn)品,那么產(chǎn)品的成熟周期至少會(huì)縮短一半。只不過開源數(shù)據(jù)庫產(chǎn)品想要實(shí)現(xiàn)盈利也是十分有挑戰(zhàn)性的事情,在國外的開源數(shù)據(jù)庫產(chǎn)品的生存空間相對舒適一些,主要是國外存在大量的有著長期主義的資本加持,另外客戶的知識(shí)產(chǎn)權(quán)保護(hù)和付費(fèi)服務(wù)意識(shí)比較強(qiáng),因此還存在大量的商業(yè)變現(xiàn)機(jī)會(huì)。而國內(nèi)的開源生態(tài)環(huán)境對于開發(fā)者更不友好,想完全依托開源數(shù)據(jù)庫產(chǎn)品盈利,難度更大。即使是國外的開源數(shù)據(jù)庫廠商想要純粹通過開源生態(tài)盈利,而不是通過一些商業(yè)化運(yùn)作來收割用戶,也是很難做到真正盈利的。因此國產(chǎn)數(shù)據(jù)庫的開源之路走得并不平坦。
擁抱開源,并不是一定就要自己做開源數(shù)據(jù)庫,還可以當(dāng)開源數(shù)據(jù)庫社區(qū)的下游廠商,利用開源數(shù)據(jù)庫產(chǎn)品封裝或者發(fā)展自己的商用版本。這就是被大家詬病得最多的“開源套殼”。實(shí)際上我也是贊同國產(chǎn)數(shù)據(jù)庫廠商利用開源代碼“套殼”國產(chǎn)數(shù)據(jù)庫的,因?yàn)檫@一條較為快速的發(fā)展國產(chǎn)數(shù)據(jù)庫產(chǎn)品的路子。如果一個(gè)數(shù)據(jù)庫產(chǎn)品完全自研需要10年時(shí)間,起碼開源社區(qū)幫我們縮短了五六年時(shí)間,讓數(shù)據(jù)庫產(chǎn)品的研發(fā)周期縮短,成熟度也有了極大的提升。比如我們要利用Postgresql社區(qū)版去封裝自己的企業(yè)版,那么只要做好自研代碼的管理,自研代碼部分能夠隨著社區(qū)版代碼的升級而持續(xù)升級。一些實(shí)力較強(qiáng)的企業(yè)也可以基于某個(gè)版本的社區(qū)版開發(fā)自己的數(shù)據(jù)庫產(chǎn)品,不斷地迭代代碼,完全脫離開源社區(qū)。
只要你的產(chǎn)品能夠遵守開源協(xié)議的要求,比如GPL協(xié)議的數(shù)據(jù)庫,你修改了數(shù)據(jù)庫之后,也能夠繼續(xù)開源代碼,如果你用了BSD協(xié)議的數(shù)據(jù)庫的代碼,你能夠根據(jù)開源協(xié)議要求保留BSD的版權(quán)聲明,那么你的商用版就是完全合法的。如果讓我選擇兩款國產(chǎn)數(shù)據(jù)庫,一款是自研了三五年的,一款是基于開源數(shù)據(jù)庫封裝了兩三年的商用版,我可能會(huì)首選后者。
但是鼓勵(lì)國產(chǎn)數(shù)據(jù)庫廠商使用開源代碼并不是支持“完全套殼”,而是希望我們的數(shù)據(jù)庫廠商在產(chǎn)品中擁有大量的自主價(jià)值。比如高可用架構(gòu)的集群計(jì)算框架、強(qiáng)一致性讀寫分離、數(shù)據(jù)庫兼容性提升、性能優(yōu)化、解決開源代碼中存在已久的頑疾等。總之你不能完全白嫖,也要有自己的原創(chuàng),并且能夠反哺開源社區(qū),對開源社區(qū)有所貢獻(xiàn)。哪怕能力有限,貢獻(xiàn)不了關(guān)鍵代碼,發(fā)現(xiàn)幾個(gè)BUG,優(yōu)化優(yōu)化文檔也是應(yīng)該的。
在基于開源社區(qū)版的企業(yè)版的功能上,你必須有自己獨(dú)到的地方,必須讓用戶有掏錢購買的動(dòng)力。如果你的收費(fèi)的商用版功能和社區(qū)版差不多,你還想收錢,那么你必須擁有強(qiáng)大的服務(wù)能力,能夠讓用戶能夠?yàn)槟愕姆?wù)能力付費(fèi),否則你的商用版的收費(fèi)就失去依據(jù)了。
總結(jié)一下今天所說的觀點(diǎn),贊同擁抱開源,使用開源代碼來加快國產(chǎn)數(shù)據(jù)庫產(chǎn)品的研發(fā)與發(fā)展。但是你要利用開源代碼掙錢,那么就要體現(xiàn)出你的價(jià)值了,讓人能夠?yàn)槟阗I單。不必要糾結(jié)數(shù)據(jù)庫產(chǎn)品是否使用了開源代碼,也并不是使用開源代碼就比完全自研低人一等。只要好用、安全、可靠,那么出身并不重要。?