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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22363020/viewspace-623086/