现在的位置: 首页 > 综合 > 正文

MS SQL Server 与 Oracle在应用上的不同 : 如果应用系统要迁移

2014年04月15日 ⁄ 综合 ⁄ 共 873字 ⁄ 字号 评论关闭

 

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) 接口,往往是应用系统的性能杀手!

待续...

抱歉!评论已关闭.