现实世界的BENCHMARK
Cache和Oracle数据库的比较
摘要
我们做了一个把数据放入数据库以供分析真实的应用程序的性能基准测试。为了执行Benchmark,一个基于Oracle的应用程序的一个单元用CachéObjectScript重写。原模块的功能在Caché上重现只需要40人小时。
我们记录了基于Caché的单元完成特定任务所需的时间,并和现有的Oracle数据库进行比较,结果是 Caché应用程序快5倍,它仅用280分钟就完成了用Oracle需1441分钟完成的数据加载和过滤任务。
介绍
Meralco是一家位于菲律宾的电力供应商。目前它使用Oracle作为它们的数据库。每个月有大量的文本数据存进数据库,被过滤,以供分析。为了改进它的数据库性能,Meralco联系了Digital Dimensions 公司,一个Intersystems高效的Caché 数据库供应商。Meralco同意让Digital Dimensions和Intersystems复制它的数据库ETL中的Field Order模块(选取,传输和储存)应用程序到基于Caché的系统上,以对比Caché和Oracle的性能。
表格命令单元
Meralco基于Oracle 8i的Field Order模块用来取得Field中产生的文本文件,并生成两张表——维表和事实表,他们分别用来分析和报告。为了完成任务,它要执行下列步骤:
1. 表中的多个文本文件(ordenes.txt和gcahorde.txt)要存在两张表ORDENED和GCAHORDE中。在基于Oracle的应用程序中,这通过OracleSQL*Loader(专用名词)来完成。
2. GCAHORDE表被过滤,生成GCAHORDE-Filtered表。
3. 运用Oracle Package和存储程序,由GCAHORDE-Filtered和ORDENED生成表或维表DD_FIELD_ORDER。
4. 运用Oracle Package和存储程序,由GCAHORDE-Filtered和ORDENED生成D F_FIELD_ORDER
重写表格命令单元
Caché允许用ODBC和JDBC存取数据,这样许多传统关系型应用程序只要做少许变动就可以在Caché数据库上运行。象Meralco的表格命令单元这样极度依靠存取程序的应用程序是个例外。把一个传统关系型应用程序转换到Caché,这些存程序需要重新用Caché ObjectScript编写。因此,用Caché ObjectScript重写Field Order模块的功能应该比改写现存的编码要快。
此方法的另一个好处就是允许基于Caché的单元采用Caché对输入文本文件的预处理功能。因为从原始的gcahorde.txt文件生成的数据进入数据库时就已被过滤了。基于Caché的单元就不需要另外的过滤步骤了。
在Meralco的指导下,Intersystems开发了基于Caché的Field Order模块,对于熟悉Caché的开发人员只需要40人小时。
结果
Caché和Oracle 8i的表格命令单元处理相同的文本文件,每种软件完成不同任务的时间都被记录,Caché运行时间比Oracle快4-23倍。结果如下:
任务 Oracle Cache 运行时间
(Oracle:Cache)
时间 记录 时间 记录
存储ORDENEDS 138分钟 927,857 6分钟 927,857 23:1
存储和过滤ORDENEDS 245分钟 90,349 23分钟 90,349 10:1
生成FO维度表 168分钟 1,018,216 24分钟 1,018,216 7:1
生成FO事实表 890分钟 1,018,216 233分钟 1,018,216 4:1
存储和过滤数据总的时间 1441分钟 286分钟 5:1
*13,396,510条源记录被过滤,90,349条记录被加载
结论
在这个事实的数据仓库应用的性能测试中运行程序中,在执行数据存储和过滤功能时,Caché比Oracle快5倍。把基于Oracle的应用程序重写成基于Caché的应用程序需要40人小时。
|
|