你知道MySQL如何趕上PostgreSQL?
Percona最近發表了一篇文章,替MySQL出謀劃策,期待趕上PostgreSQL,不過Percona本身就存在利益相關,所以大家批判性理解,我根據自己的理解做了點改動。
圖片
1.所有權和治理
MySQL相比PostgreSQL不是開源社區驅動的,早期MySQL還是很重視社區并獲得了信任,所以大公司也并不并不將其視為威脅。但到了Oracle收購MySQL后,情況就變化了,大公司特別是云服務提供商,將Oracle視為競爭對手,他們不可能給MySQL貢獻代碼。
而PostgreSQL由社區運營,PostgreSQL基金會是一個非營利組織,所有公司在PostgreSQL生態系統中都是平等的,貢獻給PostgreSQL不會為競爭對手創造價值,社區在PostgreSQL項目方向上有更大的影響力,數百家小公司使PostgreSQL在全球范圍內無處不在。
針對MySQL來說,社區能做到不多,因為決策來源于Oracle,他們更關注利潤,而不是為了擴大市場規模。
2.License
MySQL是通過GPLv2和商業許可證進行雙重許可的,用戶可以選擇在GPLv2下使用MySQL,這要求所有基于MySQL的修改和衍生作品也必須開放源代碼。不過,用戶也可以購買Oracle提供的商業許可證,這樣就可以在不公開源代碼的情況下進行商業化。
以AWS Aurora來說,作為一個兼容MySQL的成功衍生版本,AWS可以基于MySQL的源代碼創建自己的版本并進行商業化,但這通常是在云服務的形式下進行的,并不需要開放源代碼給客戶,而是將其作為服務提供。
而PostgreSQL則通過非常寬松的PostgreSQL許可證進行許可,所有人可以輕松地創建商業許可的PostgreSQL衍生版本或將其嵌入到商業許可的項目中,對于推廣PostgreSQL非常有益。
對于Oracle肯定還會堅持雙重許可,雖然市面上也有“Cloud Only”和“Open Core”這樣的商業模式取得了成功,但對于Oracle來說,雙重許可的模式更為直接。
3.社區
社區分三方面,比如對于我來說,就是用戶社區的一份子,專注于使用,這方面MySQL的基數還是很不錯的,但越來越多的新應用選擇使用PostgreSQL。
貢獻者社區,這方面PostgreSQL的貢獻者社區更加強大,因為它有很多組織參與,而不是僅僅依靠一家公司,他們會定期舉辦各類的活動進行貢獻,另外PostgreSQL的擴展屬性也更容易方便開發者對其進行貢獻。
供應商社區,這方面MySQL就比較薄弱了,因為幫助推廣MySQL可能最終只是在為Oracle創造價值。
對于MySQL來說,Oracle可以主動與潛在的貢獻者交流,舉辦一些活動,讓外部貢獻者參與,分享他們的計劃,并支持與MySQL社區發展方向一致的貢獻工作。
4.架構
PostgreSQL被設計為可擴展的,擁有大量強大的擴展,而MySQL的擴展能力則相對有限,這種可擴展性使得PostgreSQL的創新變得更加容易。
但對于MySQL來說,選擇了不一樣的模式,可擴展可能并不是他的有些選項。
5.開源產品的動力
選擇數據庫是一項長期的賭注,因為更換數據庫并不容易,選擇數據庫的時候比如考慮未來,思考隨著時間的推移,你選擇的數據庫會滿足未來的需求嗎。
對于Oracle來說,已經將許多開發重點轉向專有和云專屬的MySQL版本,不會太考慮MySQL社區,這就是他的模式。
那社區能做什么呢?
這里重點提到了,Percona Server for MySQL,他是一個完全兼容MySQL的開源替代方案來替代MySQL,直白點就是fork版本,核心是兼容性,為了避免與上游(Oracle)的合并成本過高。
那MariaDB怎么樣呢?他走的路是完全和Oracle MySQL分割,倡導創新,每個新版本和MySQL的偏離程度也越來越大。
MariaDB則做出了不同的權衡;無限制的創新使其與MySQL的兼容性降低,每個新版本的偏離程度也越來越大。
6.MariaDB
MariaDB開始也是由MariaDB基金會管理,但他是有缺陷的,尤其是在知識產權(IP)方面,特別是商標方面,它沒有擁有所有的知識產權,還是由一家公司(MariaDB公司)控制,存在存在商標壟斷的問題,和PostgreSQL的社區模式完全不一樣,并非“人人平等”。
目前MariaDB被K1公司收購,這為MariaDB的治理和商標所有權的變更提供了機會,使其更加接近PostgreSQL的模式,但估計不會成為現實。
雖然MariaDB基金會可以給MariaDB進行更名獲取完全的控制,但失去了MariaDB的品牌,就等于失去了知名度。
既然說了那么多,percona為什么不走MariaDB早期設想的那條路呢?我個人覺得發不了大財,那就發點小財?
參考:https://www.percona.com/blog/how-can-mysql-catch-up-with-postgresqls-momentum/