写真●米OracleでOracle Databaseプロダクト・マネージメント担当バイスプレジデントを務めるTim Shetler(ティム・シェトラー)氏
写真●米OracleでOracle Databaseプロダクト・マネージメント担当バイスプレジデントを務めるTim Shetler(ティム・シェトラー)氏
[画像のクリックで拡大表示]

 日本オラクルは2014年7月23日、RDBMS(リレーショナルデータベース管理システム)「Oracle Database 12c」のオプションとして、Oracle Databaseをインメモリー型で動作するようにして高速化するソフト「Oracle Database In-Memory」を発表(写真)、同日提供を開始した。既存のデータベースやアプリケーションに変更を加えることなく高速化できる。社内検証では、同社の業務アプリケーションが100倍から1000倍以上高速化したとしている。

 Oracle Database In-Memoryは、Oracle Database 12c Enterprise Editionを高速化するためのオプションソフトである(関連記事:「Oracle Database In-Memory」、7月に提供開始)。これを使うと、RDBMSのOracle Databaseがインメモリー型で動作するようになる。RAC(Real Application Clusters)など、Oracle Databaseで利用できる機能群の全てを利用できる。Oracle Database In-Memoryの価格(税別)は、1CPU当たり250万円。

 性能面での特徴は大きく二つある。一つは、インメモリー動作によって高速に動作することである。全てのテーブルが無条件でメモリー上に置かれるわけではなく、高速化させたいテーブルだけを選んでメモリー上に配置できる。もう一つは、ロー(行)型でアクセスするテーブルとカラム(列)型でアクセスするテーブルの二つの独立したデータベーステーブルをメモリー上に同時に保持し、クエリーの種類に応じてこれらを自動的に使い分けることである。

ロー型とカラム型のフォーマットをダブルで保持

 一般的なOLTP(トランザクション処理)のクエリー、つまり注文データの挿入のように少数のロー(行)と多数のカラム(列)にアクセスするクエリーは、自動的にロー型のテーブルにアクセスする。一方で、DWH(データウエアハウス)のデータ分析処理のクエリー、つまり地域ごとの売上レポートのように少数のカラム(列)と多数のロー(行)にアクセスするクエリーは、自動的にカラム型にアクセスする。ロー型テーブルに加えられたデータ変更は、自動でカラム型テーブルに反映される。

 さらに、カラム型の検索を高速化させる手法として、CPUコアを有効に活用するためのSIMDベクトル演算ライブラリーを利用している。これにより、カラム(列)型においてCPUコア当たり毎秒数十億行を検索できるとしている。これに対して、ロー(行)型においてはCPUコア当たり毎秒数百万行程度の検索速度であるという。

既存のデータベース/アプリへの修正が要らない

 一方、運用面での特徴は、こうした性能面での特徴を備えながら、Oracle Database 12cで構築した既存のデータベースやクライアントアプリケーションに修正を加える必要がなく、そのまま利用できることである。インメモリー動作のための修正が変更ないほか、ロー型とカラム型のデータベーステーブルを明示的に使い分ける必要がない。つまりユーザーは、Oracle Database In-Memoryオプションを使っているかどうかを意識する必要がない。

 使用に当たっては、メモリー上に配置して高速化するテーブルを指定するだけでよい。また、カラム型のデータベーステーブルによって検索用のインデックスを生成する必要が無くなるとしている。