アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 
 @IT > インメモリー・データベースがもたらす驚異のリアルタイム性能
 
@IT Special

 

PR

インメモリー・データベースがもたらす
驚異のリアルタイム性能

 〜 Oracle TimesTen In-Memory Databaseは
    データベースの限界を突破する 〜

Oracle TimesTen In-Memory Databaseは、現時点で最も進化したインメモリー・データベースといえる。高速トランザクション性能、開発生産性の高さといった従来の特長に加え、2007年3月に発表された新バージョンではOracleデータベースとの親和性が高まった。高負荷Webアプリケーションの開発スタイルにどんな変革がもたらされるのか?


 「インメモリー・データベース」と聞いて、ピンと来るアプリケーション開発者はどれくらいいるだろうか。「インメモリー」というからには、データベースをメモリ上に常駐させてディスクI/Oのオーバーヘッドを減らすという程度の推測はできる。だが、一般のRDBMSと同等の耐障害性が保証されていたり、RDBMSのキャッシュ技術よりはるかに洗練されたメモリ検索技術が確立されている、といったメリットはほとんど知られていないのが実情だ。

 今回取り上げる「Oracle TimesTen In-Memory Database」(以下、Oracle TimesTen)は、インメモリー・データベースの既成概念を打ち破り、その市場を一気に拡大する製品だ。インメモリー・データベースならではの高速処理と開発効率の高さはそのままに、データベース市場で不動の地位を持つOracleデータベースとの連携を可能にする同製品は、2007年3月に最新バージョンとなる7.0が発表された。早速、その特長と実力を見てみよう。

「パフォーマンス向上」と「開発工数削減」が
同時に達成できる

 Oracle TimesTenに対する期待が特に高いのは、リアルタイム性が要求される証券のオンライントレーディングや負荷の高いeコマースサイトなどのWebアプリケーションである。素早い応答速度を要求されるこれらのWebアプリケーションでは、データベース接続がボトルネックとなるケースが少なくない。

 このような事態に直面した開発者は、まずSQLチューニングを行うのが一般的な手法である。それでも要求されるパフォーマンスに達しない場合、残された選択肢は2つしかなかった。すなわち「アプリケーション側で作り込む」か「あきらめる」かだ。いうまでもなく「あきらめる」を簡単に選ぶ技術者はいない(図1)。

 図1 一般的な3階層アプリケーション開発における課題

 そこで、エンジニアは必死になってアプリケーション側に独自の高速化ロジックを作り込むのだが、これには非常に大きな問題がある。まず、実装とテストに膨大な時間と手間がかかる結果、開発効率が落ち、一方でコストは膨らんでいく。次に、それだけコストをかけて性能を向上させても、トランザクション数やデータ量が増えれば、再度独自のチューニング作業を繰り返すことになり、そのたびに関連するほかのアプリケーションとの連携にまで目を配らねばならない。その労力は計りしれないものだ。そして何よりも、ここまで高度な作り込みができるエンジニアはなかなか確保できない。かくして、アプリケーション開発工数は肥大化の一途をたどって行くというのが、悲しい“お約束”になってきた(図2)。

 図2 データアクセス高速化ロジックを独自作成するには?

 しかし、Oracle TimesTenを導入すれば、独自ロジック作成の作業は一切不要になる(図3)。チューニングの際に最も手間を食う部分をOracle TimesTenに任せた結果、開発エンジニアはアプリケーション側の作り込み作業から一気に解放され、開発効率を飛躍的に向上できるのだ。アプリケーションに組み込まれたミドルウェアとして動作するOracle TimesTenは、それ自体を運用管理する必要はなく、通常どおりSQL、JDBC、ODBCといった標準技術を用いてデータベースを利用するだけ。少ない工数で非常に高速なデータベースアクセスが実現できてしまうのだ。バックエンドのデータベースとの同期や冗長化なども、必要なオプションを選んで利用するだけである。

 図3 Oracle TimesTenによる開発手法の変革

組み込み型インメモリー・データベースから
エンタープライズへ

 インメモリー・データベースとは、通常のデータベースのようにデータをハードディスク上に保存するのではなく、メモリ上に常駐させておくデータベースの総称だ。ディスクアクセスに伴うオーバーヘッドが劇的に減少し、超高速の処理が実現するのが最大の特長である。一方で、インメモリーだから電源断でデータが損失してしまうだとか、通常のデータベースのキャッシュと大して違わないといった先入観は、Oracle TimesTenには当てはまらないことを強調しておこう。

 Oracle TimesTenの高パフォーマンスは、単にメモリ上にデータを置いているからではない。メモリ上にあるデータに対して最適化された“T-Tree”索引を採用するなど、メモリ上のデータを取得するのに特化したテクノロジを持つ。また、データの永続性を保証するロギング方式が用意されており、高速なパフォーマンスとデータ保護の両立を可能にしている。

 そもそもなぜOracle TimesTenが生まれたか、歴史的な背景を少しだけ見ておこう。その原型は、インターネット以前の電話交換機に端を発する。当時の電話交換機はハードウェアからOS、アプリケーションまで1台ごとの専用設計だったが、新しいネットワークの発達とサービスの拡大、特に携帯電話の爆発的な普及を契機として処理データ量は急増を続け、従来の専用機の開発ペースでは到底追い着かなくなってきた。そこで、1990年代後半から急速にオープン化とデータ処理の高速化の研究が進められた結果、商用データベースが導入されたのである。しかし、ネットワーク網では“データ処理の遅延=つながりにくさ”は許されない。いかにリアルタイム処理を確保するかに焦点を絞っていった結果、データをメモリに置くというインメモリー処理技術が発達した。その技術を開発者の多いSQLでアクセスできるように実装したのがTimesTenである。つまり、Oracle TimesTenは非常にタイムクリティカルなネットワークの組み込み機器分野で誕生した、歴史と実績のあるソフトウェアなのである。

 すでにネットワーク事業者(エリクソン、ノキアなど)や通信キャリア(T-Mobile、Sprintなど)などの組み込み機器分野で多くの採用実績を持つOracle TimesTenが、エンタープライズ分野でも注目され始めているのには、もちろん理由がある。Webアプリケーションの応用範囲が拡大する中で、マイクロ秒レベルのリアルタイム処理が要求される、タイムクリティカルなデータ処理のニーズは高まる一方だ。この流れを受けOracle TimesTenは、金融・証券システム(JPモルガン、BearStearnsなど)、企業の受発注システムやeコマース(SalesForce.com、Avayaなど)といった、世界の1600社以上の企業・組織に導入されているという。リアルタイムで膨大なデータを確実に処理するサービスが求められる分野の広がりを見ても、インメモリー・データベースが注目を集めるのは時代の必然だといえよう。

 さらに今後、データベースの高速レスポンスによってITのあり方が改革される期待も高まる。トランザクションの多いWeb 2.0、家庭電化製品やホームセキュリティなどの次世代ネットワーク分野、センサーベースのRFIDアプリケーション、数ミリ秒単位のトランザクションが期待される金融商品のアルゴリズム取引、通信と放送の融合による新しいサービスなど、広範囲な適用が想定されるだろう。

エンタープライズの必須要件を満たす
充実したデータベース機能

 Oracle TimesTenの特長は、超高速のデータ処理だけではない。エンタープライズデータベースにとって速いことは重要だが、それだけでは不十分だ。なぜなら、標準技術に準拠した開発生産性や、ミッションクリティカルなビジネスシステムに耐えうる可用性を提供できなくてはならないからだ。

 それではここでOracle TimesTenが提供する、“ミッションクリティカルなデータベースとしての特長”から代表的なものを見ていこう。

  • 標準のインターフェイスに準拠

    SQL92、ODBC、JDBC 3.0などの標準APIでアクセスできる。このためアプリケーション開発者なら誰もが慣れ親しんだ開発スキルがそのまま使える。

  • 行レベルロックと読み取り一貫性

    行レベルロックやRead Committed/Serializableでのトランザクション分離レベルをサポート。読み込みと書き込みが互いにブロックせず、データ整合性が確保できる。

  • データの永続性を保証

    リカバリに必要なチェックポイントファイルを作成。また、4種類のロギング方式をサポートしており、パフォーマンスとデータ保護の優先度に応じて選択できる。レプリケーション構成も、非同期/同期を必要に応じて選択でき、冗長化を実現できる。

  • Oracleデータベースとのデータ同期が可能

    オプション製品である「Cache Connect to Oracle」を使って、Oracle 9i/10gとのデータ連係が行える。OracleデータベースのデータをキャッシュとしてOracle TimesTen上に置き、高速処理を実現しながらOracleデータベース本体とのデータ更新を同期/非同期で行えるため、大規模業務用データベースのフロント処理ツール的な活用が期待できる。また、Oracle Real Application Clusters 10gをサポートしており、高い可用性を確保できる点も注目したい。
エンタープライズ用途の利便性を拡張した新バージョン

 ここまでOracle TimesTenの特長と、それらがもたらすメリットを見てきたが、2007年3月にリリースされた最新バージョンのOracle TimesTen 7.0では、さらにエンタープライズシステムにふさわしいバージョンアップが施されている。

 アプリケーションとSQLの互換性の強化

 リリース7.0では、Oracle TimesTen自身がOracleデータベースと同じデータ型もサポートするように改良されている。つまり、Oracle TimesTenをOracleデータベースのキャッシュとして利用する際、両者の挙動が同一になり、抽出結果が常に一致するわけだ。処理データの信頼性を保つうえで、これは大きなメリットといえよう。

 さらに前バージョンまでは、OracleデータベースのSQLが一部、そのまま使えなかったため、開発者はSQLの書き換えを余儀なくされる場面もあった。しかし、バージョン7.0からは多くのOracleデータベースの拡張SQL(DECODE関数、TO_NUMBER関数など)をサポートすることによって、SQLの書き換え量が大幅に減った。

 キャッシュ自身をよりインテリジェンスにする機能の追加

 インテリジェンスなキャッシュとは具体的に、「Automatic Load on SELECT」と「Automatic Data Aging」という2つの機能だ。これらは、Oracle TimesTen上にキャッシュがなかった場合、自動的にOracleデータベース上からデータを取得したり、反対に時系列で見て一定期間アクセスがなかったデータをメモリから落とすという機能である。これを使うと、CRMサイトなどでは常に入れ替わるOracleデータベース上の顧客データを最適化された必要最小限のサイズでキャッシュに展開し、なおかつ効率よく管理できるようになる。大規模で超高速処理を要求されるWebサービスなどには、パフォーマンスとサービスレベルを両立させるうえで欠かせない機能となるだろう。

 日本語処理への対応

 このほかにもマルチバイトのハンドリングをOracleデータベースと同等に行えるようになり、日本語でのソートが可能になるなど、日本市場における有用性も加えられた。

 もともとインメモリー・データベースに特化した製品として1998年にリリースされたOracle TimesTenは、2005年にOracleファミリーに吸収されたのを契機に、エンタープライズデータベースへの本格的な対応が進んだ。それが今回のリリース7.0発表で、いよいよ完成形に近づいた感がある。巨大化と高速化の進むエンタープライズデータベースの世界にあって、インメモリー・データベースの速さと開発効率を生かした新しいビジネスモデルや適用分野が拓かれていくことを大いに期待したい。


提供:日本オラクル株式会社
企画:アイティメディア 営業局
制作:@IT編集局
掲載内容有効期限:2007年4月12日
 
関連リンク

Oracle TimesTen In-Memory Database
 (プレゼントキャンペーン実施中!4/11迄)

Oracle Japan

関連記事

Oracle Databaseとの互換性が向上 オラクル、高速インメモリDB「Oracle TimesTen 7」を4月出荷 (@ITNews)

マイクロ秒の高速応答を実現、オラクルのインメモリDB「TimesTen」とは (@ITNews)

日本オラクルが組み込みDB本格展開、オープンソースDBも投入へ (@ITNews)

Oracle、データ管理ソフト提供企業のTimesTenを買収 (ITmedia News)




 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ