キャッシュによる高速化
インメモリ・データグリッド製品による高速化
TimesTenは、アプリケーションからはRDBMSとして見え、SQLでデータアクセスを行います。これに対して、リレーショナルモデルではない新しいデータストア形式を活用する手法も登場しています。クラウド環境が注目される中、AmazonやGoogleが利用しているKey-Value型のデータストア方式がそれで、高速化の手段として注目を浴びています。Oracle Coherenceは、Oracle社が提供するKey-Value型データストアのインメモリ・データグリッド製品となります。
Coherenceは、複数のハードウエアを横断した仮想的な共有メモリ領域を実現し、ハードウエアのメモリ上限値に依存せずに高速処理を可能にする、インメモリ・データグリッド製品です。この共有メモリ領域内でメモリデータのバックアップを内部的に維持することによって、ハードウエアやネットワークの障害を透過的にフェールオーバーする、高信頼性インメモリ・データ管理を可能にします。
用途としては、金融機関やオンラインストアなどのECサイトでの大量リクエストを高速に処理させたいケースや、ミッションクリティカル・システムで求められる高い可用性を実現する基盤として活用されています。
Coherenceのアーキテクチャーは、データベース層とアプリケーションサーバー層との間にデータグリッド層を構築し、複数のデータソースからデータをロードしてインメモリに展開する、というものです。これにより、大量データに対する処理の高速化、大量リクエストに対する高スループットのレスポンスの実現、メモリデータの高信頼性維持、バックエンド・データソースの負荷軽減が可能になります。
データグリッド層には、バックエンドのデータベースやストレージに対して発行したクエリや読み出しリクエストの結果として得られたデータが、javaのオブジェクトとして分散されてキャッシュされています。これにより、多数の同時アクセスを非常に高速に処理できます。
頻繁(ひんぱん)にリクエストされるデータほど、より高速にアクセスできるため、例えばオンラインストアで特定商品に対するアクセスが集中するようなケースにおいて、レスポンスの向上が期待できます。
TimesTenとCoherenceの相違点
これまでTimesTenとCoherenceのそれぞれの説明をしてきましたが、システムの高速化という目的に対してキャッシュという手段を用いて解決するという大意では同じ用途の製品です。このため、違いがわかりにくく、どちらを採用すべきか判断が難しいかと思います。
最後に、TimesTen、Coherenceのそれぞれの特徴と、どんなシステムに向いているかを説明します。
■TimesTenの特徴
- アプリケーションからみると従来通りのRDBなので、システムリプレース時でもリレーショナルモデルでの設計とSQLの流用が可能
- 既存のRDBMSベースのシステムのパフォーマンス向上が容易に可能
- 利用可能なメモリおよびシステムの要件に応じて、Timesten上にキャッシュする表(テーブル)の精査が必要
- ノード追加時にはアプリケーションパーティショニングが必要な場合がある
- Oracle Database と密接に連携する
結論:少数ノードで運用し、拡張の予定がなく、既存アプリケーションに極力手を加えずにパフォーマンスを向上させたいシステムに向いている。
■Coherenceの特徴
- RDBMSではなくKey-Value型のデータストアで、アプリケーションにライブラリとして組み込むかたちで利用する
- 複数サーバー(JVM)間でのデータ共有・データ分散が容易にできる
- リスク分析など金融系の処理等の並列処理ができる
- アプリケーションから見るとデータの位置(格納場所)は完全に仮想化されているので、容易にスケールアウトできる
- ノードを増やすことで、データ量、スループットともに比例して向上する
- Oracle Fusion Middleware製品と密接に連携する
- 処理途中のアプリケーションのメモリ・データの信頼性を高めたり、サブシステム間の高速データ通信手段として利用できる
結論:トランザクション量の増加/拡張の可能性が高い(将来的にスケールアウトが必要となる)新規開発のシステムに向いている。
キャッシュによる高速化として比較される両製品(TimesTen、Coherence)について、特徴をご理解いただけたでしょうか?
次回は、インメモリDBとして注目度が高まっているMySQL Clusterによる高速化について紹介します。