Oracle数据库,出类拔萃的原因 |
本文标签:Oracle数据库 Oracle数据库是我很喜欢的一个数据库,但是也有人喜欢其他的相关的数据库,不论我们选择的是那个相关的数据库,我们的主要实现的目标就是有存储大量 的相关数据,你应用程序使用的操作系统和语言平台,你的预算,以及是否需要数据仓库,BI或决策支持系统等 。 背景 我的许多朋友,开发人员,应用和系统架构师,有时甚至是系统管理员经常问我同类型的问题:“Bo,在我的应用中该使用SQL Server还是使用Oracle数据库?”,“BO,我应该将我的Sybase数据库迁移到SQL Server吗?”,“哪个数据库(平台)是最好的?”,“为什么我们不使用开源数据库,如MySQL或PostgreSQL?” 。 所有这些问题基本上都是相同的 —— 哪个数据库平台最适合某个应用程序,或是哪个数据库平台对IT和业务最有意义? 为了回答这些问题,在我推荐任何数据库平台之前,我会问他们更多的问题(通常是十多个),很多时候人们不理解为什么一个简单的问题会引发这么多问题 。 其实很多人不知道为什么他/她需要一个数据库,什么是关系数据库,数据库与电子表格之间的差异(以及各自的优缺点),该用Access数据库还是SQL Server数据库,或应用程序能从数据库平台获得什么好处 。 虽然我不是在这里宣传数据库是什么,但我知道对IT和非IT人员谈论数据库完全不是一回事,我不想被称为以数据库为中心的呆子,不过我认为在21世纪,人们一直在谈论BI(商业智能),我也认为最灵活,最复杂和最易维护的系统是由数据驱动的,产生的数据量多了就得用数据库来保存 。 下面我对最流行的数据库平台只做简要的介绍,并根据我的经验和与其它IT界朋友的互动,介绍一下人们是怎么使用这些数据库的 。 下面我19年来使用过的数据库: dBase/FoxBase/FoxPro in the DOS/Novell/Windows 3.x world MS SQL Server (6.5,7.0,2000,2005 and 2008) Oracle (7, 8/8i,9i,10g) Sybase SQL/ASE Servers (4.9.2, 10, 11, 11.9.2, 12/12.5, 15.x) Sybase IQ 12.6/12.7 Informix/Dynamic (6, 7) MySQL (4, 5/5.1) PostGreSQL (8.3.5)/EnterpriseDB 此外,我参加了一系列的数据库选型评估,如Vhayu和OneTick,我在各行业也有过内存数据库使用经历,如Oracle数据库 TimesTen和Sybase ASE内存版本(Sybase RAP商业版的一部分,它已成为时间序列数据库领域的一个强力竞争者,特别是去年初和CEP集成后,影响越来越大) 。 我曾经担任过公司全职员工或不同公司不同项目的顾问,真的觉得在数据库世界中确实没有银弹, 选择什么数据库主要取决于以下几方面因素: 你是谁; 你要实现的目标(业务/功能要求,性能/可靠性/可扩展性/可用性要求); 当前数据库存储了多少数据; 应用程序要选择的操作系统和语言平台; 你的预算有多少; 你是否想/需要构建一个数据仓库,BI或决策支持系统 。 比较不同的数据库系统就象比较不同的开发平台和操作系统平台: Java/J2EE与(C#, VB)/.NET比较 Windows与Linux/UNIX比较 Linux与私有UNIX系统如AIX/HP-UX/Solaris/Tru64/Irix比较 Unix与OpenMVS/UniSys/Tandem/IBM Mainframe比较 如果我们在前端办公应用系统,如订单录入,银行或电信系统中不需要数据库(主要是担忧锁/阻塞,延迟和低I/O等),我们只希望使用数据库来存储事实数据,或使用数据库来备份数据 。 当然,所有关系数据库都提供了不同的功能,即使它们都声称遵循ANSI SQL和SQL-92标准,但实际上都有自己的一套SQL语言,这就好比Websphere/Weblogic/Oracle App Server/Sybase Eserver/Jboss之间的关系,它们是J2EE的不同实现,都兼容J2EE规范,但也有自己的扩展和变化 。 关键任务(OLTP)和高性能系统 如果我们需要数据库在关键业务系统中发挥更重要的作用,并希望做到无故障时间/高可用/集群,可靠性(性能和数据量),灾难复制和自动生成报告等目标,或需要实现极端高速和低延迟(HPC,高性能计算)效果,那么我们可能需要数据库的企业级功能,但这样的成本也更高 。 HA(高可用)集群功能 各数据库平台的集群功能如下: Oracle RAC最适合HA集群,负载均衡和扩展; MS SQL Server提供HA故障转移功能,但无负载均衡; Sybase ASE 15集群与Oracle RAC功能相当; TeraData本身就是一个分布式数据库平台; MySQL集群声称TPC-C性能基准测试比Oracle RAC还高; IBM DB2/UDB在运行AIX HACMP(高可用集群多处理)的IBM P系列/Power服务器和Veritas VCS/Sun等集群上运行得很好 。 高性能/低延迟/内存数据库 Oracle数据库提供TimesTen内存数据库; MySQL的集群使用内存存储引擎; Sybase提供ASE内存数据库; 另外,我们还可以使用RAMSAN/SSD(固态硬盘)安装SQL Server数据库,所有与数据库相关的磁盘I/O都发生在SSD上,而不是传统硬盘上,因此我们可以大大减少磁盘I/O延迟,提供I/O吞吐量,并提高数据库的整体性能; 还有其它的内存数据库,如SQLite或eXtremeDB,但它们大多数要么只支持嵌入式系统,要么同一时间只支持单用户或单连接 。 |