如果需要從Oracle遷移到MS SQLServer (1)

wenpingblog發表於2009-12-19

MS SQLServer與Oracle,兩種RDBMS都是關聯式資料庫的佼佼者。但請注意:都是關聯式資料庫、但有質的不同!

 

首先,體系結構方面的差異,可能是最大的。Oracle一般執行在UNIX,如AIX、HP-UX中,MS SQLServer則執行在Windows環境下。Oracle在UNIX上採取了程式結構,而MS SQL則是執行緒結構!

 

其次,那些用來描述 Oracle術語,在 MS SQL Server 中則含義可能完全不同。Oracle就沒有“資料庫”這個概念,而MS SQL中資料庫則是最重要的後設資料型別。

 

第三,Oracle 和 SQL Server 都支援標準ANSI92的SQL,但又各自有著基於SQL-92 的擴充套件。這給應用系統在二者之間的遷移帶來巨大的麻煩,孰之過?


第四,從應用開發人員角度看,Oracle 和 MS SQLServer在管理資料的方式是相似的。但是實際上起內部儲存結構差異明顯。如果管理不當,應用程式遷移後的效能影響、正確性恐怕很大。


第五,出於開發上的考慮,開發人員為了遷移上的便利,僅使用標準的SQL-92 SQL 語言標準,禁用每種 RDBMS 提供的擴充套件,以使其程式程式碼儘可能通用。效率呢?Oracle 和 SQL Server各自的優化特點蕩然無存,效率特色無從談起!


例如,Oracle 的 DECODE 函式是 Oracle 特有產物,可對應MS SQL Server 的 CASE 表示式。他們都不是SQL-92 裡面的內容,不使用之,則只能以其他程式設計方式實現,但可能意味著RDBMS上更多的資料操作。


第六,SQL 語言的過程化嵌入也不同。Oracle 使用PL/SQL,MS SQL Server 使用T-SQL 語言。其功能是相似的,但其語法還真是各有不同。因此,應用遷移中我們可能不得不放棄使用部分儲存程式、觸發器。有時,有些功能無法替代!


第七,應用開發中難免使用專用的開發介面,如 Oracle 的OCI(Oracle 呼叫介面)轉換程式,或MS SQL Server 的db_lib介面。為了通用而不得不使用開放式資料庫連線 (ODBC) 介面,往往是應用系統的效能殺手!


待續...

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22363020/viewspace-623086/,如需轉載,請註明出處,否則將追究法律責任。

相關文章