兼容Oracle數據庫,但是要規避知識產權風險
現在很多用戶都在做數據庫國產化改造工作,因為有大量的系統要遷移,因此保持國產數據庫與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內核里換個名字,而對需要這個功能的用戶提供一個完全兼容視圖的創建腳本,從而既能夠提供最大兼容性,又能最大限度地規避可能存在的法律風險。