本文とサイドメニューへジャンプするためのナビゲーションスキップです。

スタートアップガイド

J-Net21 中小企業ビジネス支援サイト

  • J-Net21とは
  • スタートアップガイド
中小機構
  • メルマガ登録
  • RSS一覧
  • お問い合わせ

HOME > 製品・技術を開発する > デジ・ステーション

デジ・ステーション


5分でわかる最新キーワード解説
「インメモリデータベース」ってなんだ?!

日々進歩するIT技術は、ともすると取り残されてしまいそうな勢いで進化の速度を高めています。そこでキーマンズネット編集部がお届けするのが「5分でわかる最新キーワード解説」。このコーナーを読めば、最新IT事情がスラスラ読み解けるようになることうけあい。忙しいアナタもサラっと読めてタメになる、そんなコーナーを目指します。今回のテーマは「インメモリデータベース」。これでデータベースの処理能力で悩む時代は終焉を迎えることになるかも?!

「インメモリデータベース」とは?

一般的に広く普及している汎用データベース(Oracle、SQL Server、Sybase、DB2など)は、データをハードディスク上に保持しながら動作することを基本スタイルとしたデータベースで、これらは「ディスク型データベース」と呼ばれている。これに対し、ハードディスク上ではなく、すべてのデータをコンピュータのメインメモリ上に展開しながら動作することを基本スタイルとするデータベースが登場するようになり、これらのソフトウェアは「インメモリデータベース」あるいは「オンメモリデータベース」と呼ばれている。

具体的なインメモリデータベースの製品例を挙げると、IBM solidDB(日本アイ・ビー・エム)、Oracle TimesTen In-Memory Database(日本オラクル)、DAYDA.LabooII(ターボデータラボラトリー)、ALTIBASE(シアンス・アール)などがある。いずれの製品もパフォーマンスに優れており、例えば「IBM solidDB V.6.3」の場合、一般的なディスク型データベースに比べて10倍近くも処理能力が向上している(図1)。また、アプリケーションからのアクセスには一般的な SQL 言語を使用することができ、1秒以下の短時間でフェイルオーバーする能力も持っている。さらに、これらの製品の中には、インメモリエンジンとディスク型エンジンの両方を搭載したハイブリッド型のデータベースもある(図1)。

図1 ハイブリッド型のインメモリデータベース

グラフの水色の線が一般的なディスク型データベースのスループット値で、ピンクの線がインメモリデータベースのスループット値。このパフォーマンステストは、同一のハードウェア・OS構成で実施され、ディスク型が約1万6000TPS だったのに対し、インメモリ型では約14万TPSという優れた結果が得られた。

(資料提供:日本アイ・ビー・エム)

最近、超高速なリアルタイム処理が求められるWebアプリケーションなどが急増していることから注目を浴びるようになったインメモリデータベースだが、実はその歴史はかなり古い。インメモリデータベースはデータアクセス時のディスクI/Oを減らして少しでもパフォーマンスを向上させたいという目的から、1970年代に入って電話交換機やメインフレームなどの各分野で研究開発され、使われてきた技術である。これらの技術はそれぞれの機器内部だけで使われるに留まり、単独のソフトウェアとして市販されるまでには至らなかった。市販のインメモリデータベース製品が登場するようになったのは、2000年代に入ってからのことである。つまり、ブロードバンド時代を迎えてWeb2.0やユビキタスが普及するようになってきたことから、インメモリデータベースに対する需要が拡大するようになり、各ベンダともこの市場に力を入れるようになったのである。

「インメモリデータベース」が高速なワケとは?

インメモリデータベースが高速である最大の理由は、データアクセスに最も時間がかかるディスクI/Oがほとんど発生しないからであるが、それならディスク型データベースでもキャッシュメモリを使うことでインメモリデータベースと同じパフォーマンスが得られるのではないかと考える読者が多いのではないだろうか。しかし、実際のパフォーマンスを比較すると、図1に紹介したように、インメモリデータベースはディスク型データベースですべてのデータをメインメモリ上にキャッシュした場合よりもさらに速く、高いトランザクション・スループットを実現していて、応答時間の変動も少ない。

その理由は、インメモリデータベースは、すべてのデータを常にメインメモリ上に置くことを前提に設計されているからである。つまり、メインメモリ上のデータを検索・処理するために特別に設計されたデータ構造とアクセス方法、および高効率の同時実行制御メカニズムが採用されているのである。具体的には、インメモリデータベースには次のような違い・特長がある。

インデックス構造の違い

インメモリデータベースでは、検索データへの到達アクセス経路がより短くなる仕組みが採用されている。ディスク型データベースのディスクテーブルにはB+ツリー構造が使用されているが、このツリー構造はディスクからメモリへのデータ受け渡しに最適化された構造になっていて、ディスクへのアクセス回数を減らすことができる。しかしその一方で、データ検索のために比較演算しなければならない回数が多くなるという性質がある。

これに対し、インメモリデータベースのインメモリテーブルにはTツリー構造(solidDBではカスタマイズVtrieツリー構造)が使用されていて、検索対象データへ到達するまでの比較演算回数を低減させることができる仕組みになっている(図2)。

図2 B+ツリー構造とTツリー(カスタマイズVtrieツリー)構造

Tツリー(Vtrie)では、検索データを見つけるまでのパスを少なくすることで高速化を実現している。

(資料提供:日本アイ・ビー・エム)

ここで再び、なぜディスク型データベースではTツリー構造を採用しないのかという疑問が沸いてくる。その理由は、B+ツリーの場合、1回のディスクアクセスで取得することができるデータ数が多いのに対し、Tツリー(Vtrie)の場合には1回のディスクアクセスで取得することができるデータ数が少ないからだ。つまり、Tツリーでは全てのデータがキャッシュ化されていないと、ディスクアクセス回数が増えてしまうことになり、常にデータがキャッシュされていることが保証できない場合には、B+ツリー構造の方がより少ないディスクI/Oを実現できる。

バッファ領域管理の違い

ディスク型データベースと比較した場合、インメモリデータベースではすべてのデータがメモリ上にあるので、キャッシュにデータがあるかどうかチェックするステップが存在しない。つまり、インメモリデータベースでは、ディスクからメインメモリへデータブロックを移動する必要がない。

データ永続性の保証の仕組み

インメモリデータベースではすべてのデータがメインメモリ上に展開されている状態になることから、サーバに障害が発生したときの不安が大きいという読者も少なくないはずだ。そこで、例えばsolidDBでは、トランザクションログとチェックポイント処理を実行することでデータの永続性を確保している(図3)。

図3 データ永続性の保証の仕組み

チェックポイント間でサーバに障害が発生しても、ディスク上に一貫したデータのスナップショットが存在するので復旧できる。

(資料提供:日本アイ・ビー・エム)

「インメモリデータベース」活躍の場はココだ!

インメモリデータベースに最適な分野は、応答時間の高速化が求められるアプリケーション分野で、その需要は年々拡大傾向にある。例えば、多数の同時接続ユーザから高い頻度でアクセスされるといった、データの高速化が求められる分野として、チケット発行、ホテル予約、航空会社のシート予約、プライスリストの更新、通信インフラ、電話課金システムなどを挙げることができる。

また、ピーク時のワークロードをキャッシュデータでサポートしなければならない分野として、株取引、金融サービスにおけるリアルタイム分析、コールセンタなどがある。さらに、セッション管理やオンラインショッピングカートの維持が求められるE コマースアプリケーション、SaaS アプリケーションなどもインメモリデータベースが活躍する場の1つである。

なお、インメモリデータベースはディスク型データベースと競合する存在ではなく、お互いに補完し合う関係にある。具体的には、インメモリデータベース製品の中にはディスク型データベースとシームレスに統合するためのコネクタを提供している製品があり、この場合にはディスク型データベースに格納されているデータの一部をインメモリデータベースにキャッシュし、アクセス速度を高めることができる。

取材協力 : 日本アイ・ビー・エム株式会社

掲載日:2009年8月 5日

キーマンズネット

出典元:株式会社リクルート キーマンズネット 2009年07月01日掲載分

検索

このページの先頭へ