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



























