Oracle OpenWorld 2013

エリソンCEOが語るオラクル流インメモリDB--Oracle OpenWorld 2013

怒賀新也 (編集部)

2013-09-23 20:07

 米Oracleがサンフランシスコで開催している年次イベント「Oracle OpenWorld 2013」の初日となった9月22日、夕方の基調講演に最高経営責任者(CEO)のLally Ellison氏が登壇し、データベース「Oracle Database 12c」のオプションとして提供するインメモリデータベースを中心に、新製品を自ら技術解説しながら紹介した。インメモリオプションをつけるだけで、他は何も変更せずに「100倍速い」という処理が実現することを強くアピールした。

Lally Ellison氏は例年通りCEO自ら込み入った技術解説をした
Lally Ellison氏は例年通りCEO自ら込み入った技術解説をした

 同日、サンフランシスコ湾で開催されていた国際ヨットレースのアメリカズカップで、負ければ敗退という崖っぷちのレースにおいて、2連勝を飾ったOracleチーム。CEOのEllison氏は、「見ましたか、良いレースだったでしょう」と話しながら上機嫌な様子で基調講演に登場した。

 そのEllison氏が今年の最大のトピックに挙げたのが、データベースの最新版である12cにオプションとして提供する「In-Memory Option Oracle Database」である。インメモリ環境上で、ロー(行)ではなくカラム(列)型データベースを運用するという点では、SAPのHANAと基本的な考え方は同じだ。

 だが、CPUを含めたハードウェアからアプリケーションまで自社でラインアップするOracleの強みを生かし、独自性の強いインメモリ戦略に仕上げた。

カラム型の弱点、トランザクション処理

 ここで、インメモリデータベースの基本的な仕組みを「インメモリ」と「カラム型」の2点から見てみたい。

 インメモリで処理する方が速い理由として、(処理速度の遅い)ディスクI/Oがないことに加え、インメモリではCPUがより高速にメモリ上のデータにアクセスできるように設計されている点が挙げられる。一方、従来型のディスク上のリレーショナルデータベース(RDB)の場合、CPUが、データへの高速なアクセスよりもOSやディスクI/Oに最適化するように設計されているため、インメモリ型ほど処理速度が上がらないという。そのため、たとえばRDBのキャッシュ領域(メモリ)を最大化しても、インメモリデータベースほど処理は高速化しないと考えられている。

 2点目のカラム型について。カラム型は文字通り列を軸に処理するのが特徴だ。特定のカラムにのみ着目するため、処理が軽くなる。例えば、コンビニエンスストアの店主が、客の来店時間帯ごとの売り上げ金額の合計を集計したいといった場合に、「来店時間帯」と「買い物合計額」の2つのカラムを参照するだけで目的を達成できる。

 一方で、通常のRDBのようにローによる処理をする場合、一行ごとにクエリ条件との合致を確認し、データの数だけその処理を繰り返す必要がある。上記のコンビニの例で言えば、目的とは関係のない項目、例えば来店客の性別、年齢、買い物点数などのデータを含めて、いったん読み込み、集計処理しなくてはならない。その分、カラム型より処理が遅くなるというわけだ。

苦手のトランザクション処理を克服

 このように、集計作業を得意とするインメモリデータベースだが、データベースへの追加、更新、削除、さらにデータの整合性維持が求められるトランザクション処理は苦手とされる。

 これは集計の際のメリットと裏腹のものといえる。例えば、「性別」「年齢」「来店時間帯」「買い物点数」「買い物合計額」という5つの項目を含む1件のデータを追加する場合、インメモリデータベースはカラムごとにデータを保持しているため、性別、年齢などここでは、5つのカラムに追加する必要があり、ここがボトルネックになるという。逆に、ロー型である通常のRDBなら、5つの項目を含めて1件のデータ追加ということで処理できる。

オラクルの工夫とは

 やや一般論に近い形でインメモリデータベースの特性を見てきたが、Ellison氏は基調講演で「集計などのクエリ処理は少なくとも100倍、インメモリが苦手とするトランザクション処理も2倍高速化した」と強調しており、さまざまな方法で独自の工夫を施している。

 1つはCPUとの連携だ。CPUが多数のコアを持つようになっている中、Ellison氏は「CPUコアがそれぞれ、インメモリデータベース上のカラムをスキャンする」と話す。このスキャンの際、非常に高速な「SIMD(Single Instruction Multiple Data)」方式で処理するという。SIMDとは、命令列は1つだが、それを複数のデータ列に適用する並列化の一形態。これにより、クエリ処理とトランザクション処理の高速化を図る。

 さらに、トランザクション処理について、通常のRDBでは1つのデータを入力すると数十のインデックスを更新しなくてはならず、これが処理速度を遅くしているとする。インメモリではインデックス自体がなくなることで、トランザクション処理を速くできるとした。

各CPUコアの処理能力を生かす
各CPUコアの処理能力を生かす

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

所属する組織のデータ活用状況はどの段階にありますか?

NEWSLETTERS

エンタープライズコンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]