MS SQL Server 与 Oracle在应用上的不同 : 如果应用系统要迁移
2009-12-18 14:56
585 查看
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) 接口,往往是应用系统的性能杀手!
待续...
相关文章推荐
- MS SQL Server 与 Oracle在应用上的不同 : 如果应用系统要迁移
- MS SQL Server 2000 中系统表应用技巧
- MS SQL Server 、Sybase、 Oracle支持锁定方案的不同 推荐
- 应邀做这样一个讲座 , 关于MS SQLServer \ Oracle中应用优化的诸要素和实施, 大家看
- MS SQL Server 2000版在windows server 2003企业版系统上运行时造成数据库suspect的解决方法
- 两台不同的数据库中的表的操作方法(oracle和sql+server的比较)
- c++在unix系统上访问ms sqlserver的方法
- MS SQL Server迁移至Azure SQL
- ms sqlserver clr应用(一)
- 不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)
- C_连接Access、SQL_Server、Oracle、MySQL、DB2和SyBase六种不同数据库的程序源码和需要注意的点
- MS SQL Server 中系统表的作用
- 数据库查询排序使用随机排序结果示例(Oracle/MySQL/MS SQL Server)
- 如何使用Oracle SQLDeveloper 中连接MS SQLServer和MySQL数据库
- Oracle 9i与MS SQL Server 2000之比较连载二:重要概念的对比
- *SQL Server系统表的应用
- 应用系统发布在Oracle Application Server 10g的上下文的根目录
- 一个小项目从MS SQL Server移植到Oracle的SQL 语句的变化
- 使用Microsoft SQL Server Migration Assistant for Oracle工具迁移数据
- Ms SqlServer2005访问Oracle(利用DBLINK和Synonym)