自主可控是国产数据库最大的卖点之一,那么真的如他们所说的那样自主可控吗?
目前国内的数据库产品,主要基于MySQL和PostgreSQL进行二次开发,包装出各种国产数据库,如华为GaussDB (基于PostgreSQL)、腾讯TDSQL (基于MySQL)。刚好这两种数据库是基于两种不同的开源协议,今天就详细谈谈这方面的话题。
PostgreSQL 许可
根据其官网介绍,PostgreSQL 可以在任何目的下免费试用、复制、修改和分发软件及其文档,且不需要任何书面的协议,前提是要在所有的副本中注明相应的版权申明。由此可以看出 PostgreSQL 许可是一种自由的开源许可,类似于 BSD 许可。
BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布,被誉为开源许可的“活雷锋”。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
正因为 PostgreSQL 采用类 BSD 开源协议,因此得到了国内很多厂商的拥簇,基于 PostgreSQL 进行二次开发的国产数据库也非常多。可以说近期 PostgreSQL 的流行度显著增加,和它采用的绝对开源的协议密不可分。因此使用 PostgreSQL 进行二次开发的产品,能够称得上是自主可控。但有一点,现在开源不见得未来一直开源,比如谷歌的 Android ,Oracle 的 Java 等,或者在某个版本之后开始收费,或者限制某些厂商的使用许可(比如华为手机之与 Android)。
MySQL 许可
MySQL同时使用了GPL和一种商业许可(称为双重许可),以期同时满足商业分销商(如原始设备制造商、isv和VARs)和开源项目的开发和分发需求。
GPL(General Public license) 有可能是开源界最常用的许可模式,保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利。开发者可以自由复制、修改和分发软件,也可以使用 GPL 软件来盈利,可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。如果无法满足GPL,就需要获得商业许可,通过与Oracle公司联系,制定解决方案,受Oracle公司约束。
由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的就不适合集成/采用作为类库和二次开发的基础。
也因为 GPL 协议的缘故,除了一些大厂外,国内使用 MySQL 进行二次开发的并不多。毕竟小公司实力和财力有限,很难开发出足够优秀的产品,让用户付费。
综上所述,采用开源软件进行二次开发的国产化产品,仍然存在着或多或少的风险,很难称得上完全的自主可控。大家在选择的时候需要详细了解授权许可情况,避免在后期遇到不可预料的风险。