インメモリーDBで、楽天トラベル様がレスポンスタイム半減/均一化

このブログでは、Javaベースの分散インメモリーデータ・グリッドOracle Coherence」をよく取り上げていますが、オラクルには、RDBMSとしてもインメモリー型のソリューションがあります。

インメモリー・データベース (RDBMS) である「Oracle TimesTen In-Memory Database」(TimesTen) が、それです。ディスク・ベースのRDBMSである「Oracle Database」の手前に更新可能なキャッシュとしてTimesTenを配置する場合は「Oracle In-Memory Database Cache」という名前になりますが、本質的には同じものです。

Oracle Coherenceでは、Map (キー/バリュー型) のAPIを使うので、キーを指定してそのバリューを取得 (get)、キーとそのバリューを指定して更新/新規作成 (put)、検索条件を指定してキーやバリューのコレクションを取得、などを行います。

一方、TimesTenはインメモリー型とはいえRDBMSなので、Oracle Databaseにアクセスする場合とほとんど変わらない使い慣れたSQLを、引き続き使えます。既存のアプリケーションの改修もほとんど必要ありません。

現行システムでデータベースがボトルネックになってしまっている場合は、TimesTenを追加するだけで容易に解決できる場合も少なくありません。

今回、10ノードのOracle RAC (Real Application Clusters) をお使いいただいている楽天トラベル様が、「Oracle In-Memory Database Cache」を追加して、アプリケーションの大幅な改修なしに、検索処理時間半減とレスポンスタイム均一化を実現したことが発表されました。TimesTenの実力を示すいい事例ですね。