役者が揃ったインメモリ・データベース市場
Oracle Open World 2013でその存在が明らかになってからおよそ1年、ついにOracle Database In-Memoryの提供が開始されました。先日開催された国内向けのローンチ・イベントとなるOracle DBaaS & Big Data Summitでは、セミナー会場が満席となり立ち見が出るなど、本製品には非常に多くの期待が寄せられています。
インメモリ・データベースについてはこれまで多くの製品がリリースされており、1990年代にTimesTen社やSolid Information Technology 社などが先駆者となり歴史を作ってきました。最近ではSAP社のHANAやIBM社のDB2 BLU Acceleration、Microsoft社のSQL Serverなどインメモリの技術が次々と投入され、データベースにおけるトレンドになりつつあります。
ITR社のユーザ調査では、「インメモリ・データベースをすでに導入している」と回答した割合が23.0%、「今後1年以内に導入を予定している」が19.0%、「導入に向けて具体的な取り組みを始めている」が12.0%となっており、その注目度は数字にもはっきりと現れています。
Oracle Database In-Memoryも広い意味ではインメモリ・データベースに分類される製品ですが、これまでのインメモリ・データベースとの大きな違いは、「アプリケーションやSQLの変更なしに、OLTPとDWH処理の両方を高速化できる」という点です。インメモリ用に別のソフトウェアやハードウェアを導入したり、固有のプログラムを書く必要はありません。Oracle Database用に作成された既存のアプリケーションやデータといった資産をそのまま使うことができるのが、最大の強みであり差別化のポイントです。セットアップも非常に簡単で、Oracle Databaseが導入されている環境で機能をオンにするだけです。
行と列のデュアル・フォーマット
現在稼働している多くのデータベース・システムでは、用途に応じて「OLTP用」と「DWH用」のデータベース(DBMS)をそれぞれ使い分けています。DBMSにはロー(行)型、カラム(列)型という2つの代表的なフォーマットがあり、それぞれ向き不向きが存在するためです。
例えば、Oracle Databaseが採用しているロー型のフォーマットの場合、少数の行に対して多くの列を扱うようなOLTPとしての用途には向いていますが、大量の行に対して少数の列を扱うDWH処理には向いていません(※)。カラム型のフォーマットはその逆で、DWH処理には向いているものの、OLTPには向いていないという特性があります。(※)適切な索引を作成したり、圧縮やパラレル処理を行うことで性能向上を図ることはできます。
そのため、以下のようにOLTP用のデータベース(基幹系システム)で追加/更新されたデータをDWH用のデータベース(情報系システム)にロードし、それから分析をするという構成にならざるを得ず、このタイム・ラグがリアルタイムな情報活用を困難にしていました。
Oracle Database In-Memoryでは、メモリ上にロー型とカラム型のフォーマットを同時に保持するという仕組みを採用しており、OLTPとDWH処理の両方を高速化できるようになっています。OLTPでは従来どおりデータベース・バッファ・キャッシュを使い、DWH処理では新しく実装された「インメモリ・カラムストア」というメモリ領域を使います。
インメモリ・カラムストア内のデータはカラム型のフォーマットになっており、DWH処理をディスクI/Oなしで実行できます。Oracle Databaseの中に、DWH処理に特化した機構が実装されたと考えれば分かりやすいでしょう。これにより、ロー型と比べて数十倍~数百倍の性能向上が期待できます。
情報系システムにデータをロードしてから分析するというこれまでの常識を変え、OLTPもDWH処理もすべて同じデータベース上で高速に処理できるのが、Oracle Database In-Memoryなのです。