Oracle TimesTenとは?
まずは、Oracle TimesTenってなあに?というところからご説明させていただきます。
Oracle TimesTenはマイクロ秒レベルの超高速なレスポンスを追求したオラクル社製のインメモリーデータベース製品です。元々は買収製品だったのですが、バージョンが進むごとにOracle Databaseとの親和性が高くなり、最近ではOracle DatabaseのEnterprise Editionのオプションとしても提供されています。
Oracle TimesTenを採用するシステムは、当然ながら厳しい性能要件があり、オラクル製品の中でも高速処理を得意とするOracle ExadataやOracle Coherenceと比較されることが多いです。
Oracle Coherenceとの1番大きな違いはOracle TimesTenがSQLを使えるRDBMSであるという点です。
「そんなのデータベースだったら当たり前でしょ?」と言われてしまえばその通りですが、実はここが多くのお客様にとって採用の決め手になっているのです。
Oracle Databaseを採用している現行システムの一部を高速化したいというニーズが多いため、SQLが使えることによってアプリケーションの移行コストが抑えられるという点は大きなアドバンテージになります。
SQLアプリケーションの場合、Oracle ExadataおよびOracle TimesTenをターゲットにすることができますが、比較的シンプルなSQLでマイクロ秒レベルの性能を追求するアプリケーションでは、Oracle TimesTenをアプリケーションのキャッシュとして活用することも非常に効果的です。
一言でOracle TimesTenといっても、実は製品としては2種類に分かれていて、 Oracle TimesTen In-Memory Database(Oracle TimesTen のみのシンプルな構成)、Oracle In-Memory Database Cache(Oracle TimesTen と Oracle Databaseを組み合わせた構成)とそれぞれ呼び名が異なります。中身は同じ製品ですが、構成によってご利用いただく製品を選択してください。
Oracle TimesTen はなぜ速いのか?
Oracle TimesTenは高速性能を謳っていますが、なぜ速いのかがわからないと正直胡散臭いと思う方も多いでしょう。ですので、ここではOracle TimesTenの速さの理由について簡単にご説明しましょう。
まず、Oracle TimesTenは「全てのデータがメモリ上にある前提で作られたインメモリーデータベースだから速い」のです。
「そんなことはもうみんなわかっているよ」と言われそうですが、ではOracle Databaseでもバッファ・キャッシュを大きくして全データをメモリにどーんと載せればOracle TimesTenと同じくらいの性能が出せると思いますか?
答えはNOです。重要なのは「全てのデータがメモリ上にある前提で作られた」という点です。
Oracle Databaseでは、テラバイトからペタバイト・クラスのデータベースをギガバイトからテラバイト・クラスの物理メモリ上のバッファ・キャッシュに配置し、データベース処理の高速化を図っています。そのため、この2種類の記憶装置(Oracle Exadataのようにフラッシュを使う場合には3種類)の間での透過的なI/Oを高速かつ、高信頼、スケーラブルに行うためのロジックを実装しています。それに対して、Oracle TimesTenはメモリ上のデータを持ってくるだけでよいのでデータ管理や処理にかかわるロジックがシンプルであるということが速さの秘訣の一つといえます。
Oracle TimesTenはアプリケーション・サーバとは別のサーバにインストールして、クライアント・サーバ接続で繋ぐことも可能ですが、アプリケーション・サーバの中にインストールして、ダイレクト接続することも可能です。Oracle TimesTen の高速性能を引き出せるのはもちろん後者のダイレクト接続です。
では、Oracle Databaseでもアプリケーション層に配置すればOracle TimesTenと同じくらい速くなるのでしょうか?
答えはやはりNOです。
ダイレクト接続ではOracle TimesTenのDBエンジンがユーザ・アプリケーションからライブラリとして読み込まれ、アプリケーション・プロセス上で稼動します。プロセス間通信やネットワークのラウンドトリップが発生しない分、高速性能を実現することが可能なのです。
非常に複雑な分析やビジネスロジックの処理をデータベースエンジン内でこなすことができるOracle Databaseを優等生タイプとするのであれば、Oracle Databaseと比べるともちろん苦手なこともいろいろありますが、インメモリ処理に必要なアーキテクチャと処理に特化したOracle TimesTenはゴリゴリの高速オタクと言えます。