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,但它们大多数要么只支持嵌入式系统,要么同一时间只支持单用户或单连接  。