ホワイトペーパーとアナリストレポート

データ・マート・アプリケーションにおける
InterSystems Caché と Oracle のパフォーマンス比較

著者
インターシステムズ社
システム・エンジニア
Mark Massias

要約

モバイル通信ソフトウェアを全世界に供給している Airwide Solutions が、シミュレートしたデータ・マート・アプリケーションにおけるデータベースとして、InterSystems Caché® と Oracle 9i のパフォーマンスをテストしました。その結果、データ・マートの構築では、Caché が Oracleより41% 速いことがわかりました。またデータ・マートのSQL クエリに対する応答時間をテストしたところ、Caché のパフォーマンスが、Oracleの1.8 〜 513 倍も速いことがわかりました。

はじめに

通信会社は、膨大な情報を生成し、その分析を行う必要があるため、要求の厳しさでは世界随一のデータベース・ユーザです。実務に耐えるビジネス・インテリジェンス・ソリューションを作成するために、通信会社は通常、重要度の高い生データを選択して、“データ・マート” にロードします。データ・マートでは、各種の方法でデータにインデックスを付けて集計した後、分析に使用できるようにします。それでも、扱うデータ・マートはサイズが数百ギガバイトになることもあります。データ・マートの作成においても、データ・マートのクエリ応答時間においても、データベースのパフォーマンスは、情報のタイムリーな分析、ひいては、企業がビジネス環境の変化を洗い出し、その変化に取り組む能力に不可欠です。

この白書では、InterSystems Caché®とOracle 9iに対して実施したパフォーマンス比較テストの結果を示します。このテストを実施したのは、モバイル通信ソフトウェア会社であるAirwide Solutions です。同社は、携帯電話の使用に関連する新たなビジネス・インテリジェンス・アプリケーションに組み込むという視点でデータベース・テクノロジを評価しました。

テスト

テストに際してAirwide は、データ・マートの典型的なシナリオをシミュレートしました。テストのパート 1 では、大量の携帯電話データをロードし、インデックスを付けて集計しました。各ステップの所要時間とデータベースの結果サイズを測定しました。テストのパート2 では、複数の各種 SQL クエリに対する応答時間を測定しました。

すべてのテストは、32ビットのLinux Redhat A.S. 3.0 が実行されている専用のHP DL380サーバで実施しました。このサーバには、4GBのRAMと2GBの共有メモリ、また3.4GHzのXEONプロセッサが1つ搭載されていました。

パート 1 – データのロード、インデックス付けおよび集計

このテストで使用したシミュレートされたデータ・マートは、大きな“ファクト・テーブル”で構成され、そのテーブルに含まれている要素は以下のとおりです。

  • 製造元 – 携帯電話のメーカー
  • 機種 – 携帯電話の機種
  • MSISDN (Mobile Station International ISDN Number、つまり電話番号)
  • ローミング (あり/なし) – 加入者がローミングしているかどうか
  • 変更 (あり/なし) – 加入者に地域変更があったかどうか
  • 地域 – 加入者の所在地域 (プロバイダが複数の地域をカバーしている場合があります)

標準的なインデックスとビットマップ・インデックスを組み合わせて、ファクト・テーブルにインデックスを付け、クエリに対する応答時間の短縮を図りました。また、製造元別、機種別、地域別、およびそれらの順列別にデータを集計した各種のサマリー・テーブルを作成しました。

システムに 10 個のファイルをロードしました。各ファイルは 500 MB で、データの合計量は 5 GB です。

図#1 に、データのロード、インデックス付けおよび集計の所要時間 (秒) を示します。全体として、この処理全部を完了するまでにCaché が要した時間は 2,819 秒です。Oracle の所要時間は 3,967 秒ですから、41% 速いことになります。

図#2で、データベースとインデックスの結果サイズを比較します。使用したディスク容量は、Cachéの方が、わずかですが7.8%小さくなりました。

パート2 - クエリのパフォーマンス

CachéとOracle両方のデータベースに対して、以下の5つのSQLクエリを実行しました。

     クエリ1: select count(*) from fact_table where MSISDN like '%579%'

     クエリ2: select count(*) from fact_table where MSISDN like '%356%' and Manufacturer='Nokia'

     クエリ3: select * from fact_table where MSISDN like '%59421%'

     クエリ4: select * from fact_table where MSISDN like '%21%46%' and ISRoamer = 0 and ISChanged = 1

     クエリ5: select * from fact_table where MSISDN = '161323202273' and ISRoamer = 0

すべてのクエリは、事前にデータベースを “ウォーミング” せずに実行しました。これによって、キャッシュされたデータを使うことがないので、パフォーマンスを比較するためのより厳格な基準となっています。

Oracle データベースを構築するときに、インデックス付けの手法をいくつかテストしました。ある方法では、Caché データベースで使用する手法をそのまま流用しました。それ以外の方法は、Oracle のパフォーマンスを最適化するという目的に特化して設計しました。Oracle データベースの所要時間は、得られた時間の中で最短になりました。

図 #3 に、5 つの SQL クエリそれぞれに対する応答時間 (ミリ秒) を示します。どの場合でも、Caché の方が速いという結果になりました。テーブル#1 は、各クエリに対する応答時間の比率を Caché/Oracle で示して、Caché の高速性を実証しています。

Chart

テーブル #1:Caché/Oracle の比率

 

クエリ #

Caché faster than Oracle by

1

4.7倍

2

1.8 倍

3

513倍

4

6.2倍

5

1.9倍

まとめ

通信ソフトウェア会社向けのデータ分析アプリケーションをシミュレートするテストでは、携帯電話情報のデータ・マートを作成するときに、Caché が Oracle 9i より 41% 速いことがわかりました。また、作成したデータ・マートに対して SQL を使用してクエリしたところ、Caché の応答時間が 1.8 〜 513 倍も速いことがわかりました。これではっきりわかるように、大量のデータを迅速に分析する必要のあるアプリケーションには、Caché 独自の多次元データベース・エンジンがお勧めです。