オラクル、Oracle 12cにインメモリとカラム型データベースの追加機能を発表OOW 2013速報(1/2 ページ)

米国で開催中のOOW 2013では、12cのインメモリオプションや“ビッグメモリマシン”「Oracle M6-32」、DBのトランザクションログ管理アプライアンスやそのクラウド展開などの発表が相次いだ。

» 2013年09月24日 15時00分 公開
[新野淳一,Publickey]

 米オラクル主催のイベント「Oracle OpenWorld 2013」がサンフランシスコで開幕。基調講演で登壇した同社CEOのラリー・エリソン氏は、現在データベースの新しい技術として注目されているインメモリ処理とカラム型データベースの機能をオプションとしてOracle Database 12cに追加すると発表。さらにインメモリ処理に優れた32TBメモリ搭載可能な新型SPARCサーバも発表した。本稿では、基調講演の内容をダイジェストで紹介する。

Oracle DatabaseのIn-Memroyオプション発表

 講演で、エリソン氏は「データをメモリに載せることでシステムは高速になる。Oracle Database In-Memory Optionで、分析系のクエリが100倍早くなる。この性能向上をデータウェアハウスだけでなく、トランザクション処理においても獲得できないだろうかと考えた。私たちはその課題を解決し、トランザクション性能も少なくとも2倍にした」と発言している。以下、セッション中のエリソン氏の発言をダイジェストで紹介する。

基調講演で登壇するラリー・エリソン氏

従来の行ストアとカラムストアを両方持つ

 Oracle Database、IBM DB2などのデータベースでは、これまで長い間データを行ごとに格納するロー(行)フォーマットが使われてきた。

 これはリレーショナルデータベースが登場したときからだ。データの追加、更新といったトランザクションで行ごとにデータを素早く書き換えることができる。

 しかしこの数年、データベース技術者の間では、カラム(列)フォーマットという新しい方式が持ち上がっている。カラムフォーマットではレポーティングなどのクエリ処理が高速になるという利点がある。

 そこで私たちは、両方のフォーマットを用いることにした。通常のローフォーマットと同じデータを、カラムフォーマットでメモリ内に持つのだ。

 そしてローフォーマットのデータが追加更新されると同時にカラムフォーマットのテーブルもアップデートされ、両者が常に整合性が保たれるようにする。

 カラムフォーマットのデータストア(カラムストア)をインメモリに持つことで、分析系のクエリ処理が100倍も高速になる。

カラムストアで1秒あたり数百万件もの処理

 カラムストアにはトランザクションのログ管理手続きがないため、処理オーバーヘッドはほとんどない。

 カラムストアを持つことにより、データ処理は非常に速くなる。しかも、プロセッサのコアごとにカラムをスキャンすることで、1秒あたり数百万件もの処理が可能になる。また、複数テーブルのクエリでは、ジョインも「桁違いの速さ」で実行される。

余分なインデックスが不要になりOLTPも高速化

 さて、ローストとカラムストアのデータの整合性を常に維持するという余計な作業をするというのに、どうやってOLTPをより高速にするのか、というもっともな疑問について説明しよう。

 従来のデータベースでは、文番号などのプライマリーキーにインデックスを付けた。さらに集計や分析などのクエリで使うために10や20のインデックスを付けていただろう。

 このとき、テーブルにデータを追加すると、10〜20ものインデックスに対するアップデートが発生する。これはコストのかかる処理であり、だからデータベース管理者はインデックスの付け方をよく考えなければならなかった。

 そして集計や分析用のインデックスがOLTPを遅くしていた。

 そこでこのインデックスをなくしてしまい、メモリ上のカラムストアに置き換えてしまおう。すると、テーブルにデータを追加しても1つから3つ程度のインデックスのアップデートで済む。カラムストアはメモリ上にあるため、更新のオーバーヘッドはほとんどない。これでOLTPは劇的に速くなるのだ。

 データベース管理者はインデックスに悩む必要がなくなり、OLTPも分析もすべての処理が速くなり、チューニングも必要なくなる。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。