Oracle Database 10g对比SQL Server 2005的竞争优势
微软于2005.11.7正式发布SQL Server 2005。通过对比Oracle Database 10g和 SQL Server 2005功能和性能,我们给出Oracle Database 10g的竞争优势。
1. 功能优势
在微软发布的“数据库管理需要的10大特性” ( “Top10 Features for Database Administration”) 中, 几乎所有的特性都在 Oracle 8i 或更早的版本中已经实现。
1.1 SQL Server 2005 的新特性:
l Database snapshot isolation
Snapshot isolation 提供了一种机制,用来一个会话中的数据更改过程中,避免另一个并发会话中只读操作处于阻塞等待。Snapshot isolation又叫Row Versioning, 因为SQL Server提供了两个版本的正在改动的行,改动前的行和正在改动的行。然而,SQL Server的这个新特性是以牺牲性能为代价。而Oracle的多版本读一致性(MVRC)的出色实现使得并发性比 SQL Server 好得多。
l Database snapshot
这一功能使管理员可以生成和使用数据库的稳定的只读视图。数据库快照可提供这种功能,而不必创建数据库或存储要求的完整副本。SQL Server的这一功能需要手工创建, 而不像 Oracle 闪回(flashback)技术,可以自动完成。
l Database mirroring
数据库镜象能够不断地将事务日志从主服务器写到备份服务器。当主系统失败的情况下,应用程序可以立即通过备用服务器连接到数据库,不用等待恢复工作的完成,因为镜象服务器是完全同步的。Oracle Data Guard 可以实现相同的功能。SQL Server的备用数据库在切换前是不能被访问的,而在Oracle的备份数据库上可以进行只读操作,例如报表查询,提高了资源利用率。
l Partitioning
对超大规模数据库 (VLDB) 来说,表和索引等对象的分区(partition)能力无疑是非常重要的特性。分区实现的好坏关系到超大数据库的扩展能力。Oracle Database在9i中就已经提供了分区功能,在10g中进行了一些改进,例如对分区上的索引功能进行了改进。
l Encryption
SQL Server和 Oracle Database都提供了各种加密技术, 但是Oracle的透明数据加密(Transparent Data Encryption),让用户可以对磁盘上的关键数据库数据进行加密 (比如指定哪些列需要加密,因为通常并不是表的所有列都是机密数据)而无需重写访问数据的应用程序,更加方便。
1.2 Oracle Database10g 提供了丰富的特有功能,而在SQL Server 2005中没有对应的功能:
l Oracle Logminer
提供提取数据库上的所有DML/DDL历史操作的功能,用于审计,复制和创建回滚脚本。这意味着可以提取旧的redo log能够看到整个事务协议。SQL Server 2005中没有对应的功能,尽管第三方工具如Lumigent Log Explorer 能够提供对应的功能。
l Flashback Query
用于安全或人为错误导致灾难的恢复。利用Flashback Query可以访问数据库对象的快照,比如某个时间点的表内容。
l Auditing
通过在init.ora中设置 audit_trail=db_extended所有的SQL queries能够被审计。SQL Server 2005只有通过MSSQL trace实现类似的部分功能,但是会对系统性能有很大影响。
l Statistics History
由于Oracle的统计数据是存储在数据字典表中的数据块,Flashback选项提供了DBA将统计恢复到以前某一时间点的状态。如果修改语句的执行计划由于某些分析或周期性统计而导致性能变差,可以回滚统计重新解析,从而帮助优化queries执行计划。
l Rollback statistics
用于在事务失败情况下,统计事务回滚所花费的时间和对系统性能造成的影响。SQL Server 2005没有对应的功能,而在 Oracle 9i 和10g,可以很简单地通过查询 V$FAST_START_TRANSACTIONS 固定视图来实现。
l Automatic Workload Repository
Oracle10g提供了丰富的视图,这些视图自动保存根据负载类型和等待事件来划分的历史统计数据,用于分析性能问题。比如你在24小时之内发现系统某一时刻异常繁忙,或响应时间很长,可以立即利用这些视图进行分析,而不需要打开任何在线统计机制。由于这一机制由Oracle内部机制实现,对性能的影响非常小。
l Object Oriented Featured
面向对象功能,例如 objects和vararrays。
l Optional compilation of PL/SQL to native binary (shared library) via C compiler
目前多数的开发是基于虚拟机,比如java 和CRT,然而native code 能够提供更好的性能。从9i开始,Oracle提供了将 PL/SQL 编译成native code的选项用以提高性能。
2. 性能优势
在Transaction Processing Council (TPC)的最新TPC-H评测中,Oracle Database 10g 是大多数情况的性能基准测试的世界纪录保持者。TPC-H是决策支持系统的基准测试。最新TPC-C评测中,Oracle Database 10g的性能同样领先于SQL Server 2005。TPC-C是联机事务处理的基准测试。
3.安全性和数据可靠性
SQL Server 2005在安全性方面比SQL Server2000有所提高,引入了数据加密存储功能,但就数据库整体安全性方面仍远远落后于Oracle 10g数据库。
n 用户身份认证
SQL Server 2005目前仍依赖于简单的用户名和密码以及LDAP服务器,相比之下Oracle不但能借助于数据库/操作系统/第三方认证服务器认证,还能够结合数字证书、动态令牌、生物认证等强认证模式
n 细粒度审计
Oracle 10g支持基于DML和DDL的审计功能,也意味着用户可以通过查看审计信息掌握在数据库中何时、何人、以何种方式访问什么数据,并对其进行了何种操作。SQL Server 2005目前仍无法支持此种功能
n 透明数据加密
Oracle 10g支持基于简单SQL语句的数据加密技术,且对用户程序透明。SQL Server 2005支持加密的API技术,但机密虚额外编程,且对上层应用程序不透明。
n 行级别访问控制
Oracle 10g支持数据库表中行级别授权机制,可实现基于用户角色控制行级别访问权限。
n 超级用户控制
Oracle 10g支持超级用户访问控制,消除了DBA和特权用户越权访问应用数据所带来的安全隐患。
Oracle作为业界最安全的数据系统,至今已经通过了18项独立安全评估机构的认证,而SQL Server通过的安全认证评估仅有一项。
4.可管理性
SQL Server一直以来标榜自己为“最易使用”的数据库,但其管理成本的降低是以牺牲管理功能为成本的。与SQL Server2005相比Oracle 10g在管理性方面有以下的优势:
n 智能化自我管理
n 自动性能诊断监控 (ADDM)
n 自动全面的应用程序调整 (SQL Tuning/Access Advisors)
n CPU资源管理
n 自动存储管理 (ASM)
n 自动备份管理
n 简单自动的人为错误处理 (闪回)
根据技术分析咨询公司爱迪生集团(Edison Group)进行的数据库安装、维护和操作的对比试验表明,Oracle 10g在管理和维护成本方面的操作比SQL Server更简便。
n Oracle 10g数据库Release2 管理员执行普通操作的所花费的时间比SQL Server 2005节省38%。
n Oracle 10g数据库Release2 在相同管理任务的执行步骤上比SQL Server 2005节省30%。
5.总结
SQL Server 2005 的不足:
l 被锁定在Windows平台,没有丝毫的开放性。在企业内部,通常多种操作系统共存,而SQL Server 2005只能在Windows平台上运行,对于企业未来的发展将会成为阻碍。
l Windows 平台上层次不穷的安全漏洞和病毒问题是运行企业级软件最大的威胁之一。为了数据的安全性,Linux + Oracle Database 是中小企业的最佳选择。
l SQL Server 2005是微软在SQL Server 2000之后,历时5年推出的新版本。它的可靠性、安全性、伸缩性和性能还有待于市场和时间的检验。而Oracle Database 10g 已经是版本2,具有广泛的应用和成功案例。
l 不支持企业网格(grid)计算。
Oracle网格,由Oracle软件将服务器和存储器连接在一起的一组低成本服务器,作为一个单一整体提供服务。Oracle网格能以比最快的大型机更快的速度运行应用系统。而且如果一个服务器发生故障,大型机会中止运行而Oracle网格仍可以保持正常运行。
采用Oracle网格技术只需极小的投资,且丝毫不会干扰企业正常运营,并可快速实现投资回报:
1. 以低成本、模块化的服务器和存储器实现标准化
2. 借助Oracle数据库和真正应用集群整合服务器和存储器
3. 借助Oracle企业管理器自动化日常管理任务
l 只有主备(active-passive failover)数据库集群, 导致备份机器资源闲置,没有Oracle Database 10g RAC等同功能 (active-active)。Oracle Database 10g RAC使应用程序在多台互联或集群服务器上不受干扰地运行,从而提高应用程序的可用性和可扩展性。经过验证 (Certified)的Oracle Database 10g Rel 2 RAC可以支持高达100个节点并行工作。
l 数据库性能SQL Server 依然落后于 Oracle Database 10g。