现在很多用户都在做数据库国产化改造工作,因为有大量的系统要迁移,因此保持国产数据库与Oracle的兼容性就十分重要。前几天有个做国产数据库改造的客户和我讨论应用迁移的问题,他觉得如果原有的Oracle上开发的应用什么都不要变,连SQL*NET都兼容就最好了。他发现现在大多数客户端兼容的数据库都是MySQL和PostgreSQL,很少见到与Oracle客户端兼容的数据库。不过最近他发现了有几款国产数据库是与Oracle客户端完全兼容的,因此他考虑建议领导把这个作为数据库选型的条件,问我是否合适。
我建议他慎重考虑一下,Oracle的SQLNET是一种带知识产权保护的私有化协议,这个数据库厂商如果没有获得Oracle原厂的授权使用,可能存在侵权的嫌疑。如果真有数据库厂商这么干了,那么说明这个厂商的法律意识很淡薄。他们认为自己并没有破解Oracle的代码,只是从网络协议上破解了SQLNET的协议包,一切都是自主的。实际上几年前我和还在经营贫民软件的老楼也探讨过这个问题,当时很多客户需要他们提供基于Oracle数据库的OneProxy,当时我们讨论的结果是,可以基于JDBC/ODBC/OCI来做这个功能,但是不能直接破解SQL*NET来做,否则容易陷入知识产权纠纷。
目前一些国产数据库厂商与MySQL/PostgreSQL等客户端兼容,这一点是没有什么问题的,因为这些数据库都是开源的,网络包协议也是开源的,这就是目前为什么有很多数据库产品可以直接兼容MySQL/PostgreSQL数据库的客户端,但是很少看到开源/商用数据库直接兼容Oracle的客户端的最主要的原因。
基于上述考虑,我个人认为,通过破解SQL*NET达到数据库与Oracle客户端的兼容,是一种十分危险的知识产权侵权行为。如果Oracle的客户端和JDBC驱动能够直接访问果茶数据库,那么就已经说明侵权已经存在了。我们搞国产化数据库,可以学习Oracle的先进经验,可以尽可能在一些语法、用法上和Oracle兼容,但是不能突破知识产权保护的壁垒,不能侵权,这应该是我们的厂家应该秉持的底线。
实际上现在国产数据库都在搞与Oracle的兼容性适配,这里面一定有大量的知识产权方面的陷阱,因此我们的数据库厂商需要多找一些法律方面的专家来协助分析,否则如果做大了,很容易陷入法律风险之中。
前阵子有个数据库厂商和我讨论数据库的内部视图,比如DBA_TABLES等做得和Oracle一模一样,是否存在法律风险的问题。我不是知识产权法律方面的专家,并不清楚这个问题的答案是什么,我想大部分国产数据库的厂家也没有能力给出准确的答案。不过我还是希望国家主管部门能够在这方面做一些工作,为我们的数据库厂商划出一条知识产权保护的红线来。不过我当时给了他们一个打擦边球的方法,就是把这些系统视图在RDBMS内核里换个名字,而对需要这个功能的用户提供一个完全兼容视图的创建脚本,从而既能够提供最大兼容性,又能最大限度地规避可能存在的法律风险。