TimesTenのテクノロジ
アプリケーションに対してキャッシュをどのように活用するのか、例として、エアラインの予約システムを考えてみましょう。
多くの人がフライトスケジュールを見るために大量のWebアクセスを発生させます。チケット情報や予約状況はもちろん、あるフライトに対して、どの機材がアサインされたか、どのクルーがアサインされたか、といったエアラインが内部で利用する情報も、すべての情報がOracle DBに格納されているとします。
TimesTenをOracle DBの前段に配置してキャッシュとして使うと、Oracle DBが格納している情報の中から、必要な情報だけをコピーしておくことができます。Webを通じてアクセスしてくる多くのユーザーが見たいのは、フライトに関する情報や座席状況に関する最新情報ですから、この部分だけをTimesTenにコピーしておくことができます。
TimesTenは極めて高速なので、大量のWebアクセスが発生しても、ユーザーには快適なアプリケーション体験が提供されます。同時に、バックエンドのOracle DBも大量のアクセスから解放されます。 TimesTenが格納している情報に対するリクエストはTimesTenだけで処理され、Oracle DB側にアクセスが到達することはないからです。このため、Oracle DBに与える負荷も軽減されることになります。
別の座席販売アプリケーションによって空席に予約が入り、フライトが満席になることもあります。このように、TimesTenが知らないうちにバックエンドのOracle DBのデータが変更されると、キャッシュの内容が正しいデータと一致しなくなってしまいます。TimesTenではOracle DBとの密接な連携により、こうした場合にも自動的にTimesTenの情報がアップデートされるようになっています。
キャッシュのために別のデータベースを導入するまでもなく、Webキャッシュのためのソフトウェアやアプライアンスを使えばよいという考え方もあるかもしれません。実際、階層型のアプリケーションインフラの中には、キャッシュ技術を導入可能な層がいくつもあります。たとえば、データベース層、アプリケーション層、Web層のそれぞれでキャッシュ技術が実装されています。
TimesTenをOracle DBの前段でキャッシュとして利用する場合、アプリケーション層のすぐ手前で動作することになります。ただし、これはWeb層でのキャッシュ技術と対立する概念ではありません。実際には、必要に応じてどちらかを選ぶこともできるし、同時に併用することも可能です。TimesTenによるアプリケーション層でのキャッシュとWeb層でのキャッシュはそれぞれ動作が異なり、異なるアクセスに対して効果を発揮します。2つの技術を併用すれば、それぞれがパフォーマンスに対して貢献することになるでしょう。Web層のキャッシュ技術が存在することはTimesTenによるアプリケーション層キャッシュの意義を損なうものではないのです。
TimesTenは組込用途でも利用されていますが、アプリケーションソフトウェアへの組込が主です。TimesTenのフットプリントでは、モバイル機器や家電製品への組込は想定されておらず、こうした用途にはBerkeley DBやOracle Liteが対応します。なお、TimesTenのシステムサイズは10MB程度で、さほど大きいわけではありませんが、携帯電話に組み込むには最適とは言えないサイズであることは間違いないでしょう。データサイズに関しては、システム上でどれだけのメモリが実装されているかに依存します。実際の運用例では、60GB~100GBというサイズで利用されている例もあります。
将来の展望
TimesTenは、現時点でもいくつかの業種で広く利用されています。
たとえば、テレコム(電気通信)業界、ファイナンシャルトレーディング(金融取引)業界、エアラインやチケット販売などの顧客向けアプリケーションの分野はTimesTenが得意としている市場だと言えます。一方これまでのところ、製造業向けの取り組みはまだ充実しているとはいえない状況ですから、今後はこの分野でより積極的に取り組んでいくことも考えられますね。
製品開発に関しては、Oracle DBとの互換性をさらに高めることと、キャッシュの透明性をさらに強化することが大目標となります。さらに、最初期から一貫して取り組んでいる最重要テーマがパフォーマンスの向上であり、この点には常に努力を重ねています。
エンタープライズ市場では、Oracle DBのキャッシュとして利用される例が多数を占めています。このため、Oracleに買収されて以降の製品開発では、リリースアップごとにキャッシュ機能の強化を継続的に行なっています。Oracle DBとの互換性向上も重要で、現在ではアプリケーション側から見るとOracle DBもTimes Tenもほぼ同じようにアクセスでき、どちらにアクセスするかに応じてアプリケーション側のコードを変更する必要はまずないという状況にまで至っています。