インメモリデータベース、カラム型データベースは使い物になるのか? インメモリとカラム型データベースの可能性を調べる(その1)
ERPベンダ最大手のSAPは2010年、新規に開発したデータベース「SAP HANA」(当時の名称は「SAP High-Performance Analytics Appliance」)を発表しました。
HANAの製品化を背景に、SAPは2012年5月にデータベース市場への本格参入を宣言し、オラクルやIBM、マイクロソフトとデータベース市場で競合していくことを表明。そして今年2013年2月にはついにERPと組み合わせた「SAP Business Suite powered by SAP HANA」の出荷を開始し、業務アプリケーションのバックエンドデータベースとしてHANAの本格利用を開始しました。
HANAには、これまで主流だったリレーショナルデータベースとは異なる2つの技術的な特長があります。1つはデータベースをメインメモリ上に保持する「インメモリデータベース」、もう1つはデータを列(カラム)指向で処理する「カラム型データベース」です。
この2つの技術はいま、主要なデータベース製品にも次々に採用されています。
マイクロソフトは現バージョンのSQL Server 2012で「xVelocity」と呼ばれるインメモリ機能とカラム型データベース機能を搭載、次期SQL Serverではさらにインメモリ機能を強化したコード名「Hekaton」を搭載予定です。
オラクルもハイエンド製品の「Oracle Exadata」ではカラム型データベース機能を備え、最新の「Oracle Exadata X3 Database In-Memory Machine」ではインメモリの名前を冠しています(ただしフラッシュメモリが中心)。
また、IBMが今月発表したIBM DB2の最新版IBM DB2 10.5でも、インメモリデータベース機能とカラム型データベース機能が組み込まれています。
インメモリデータベースとカラム型データベースの2つの技術は、このように最新製品に続々と採用されている注目すべき技術なのです。
インメモリデータベースとカラム型データベースへの疑問
一方で、この2つの技術は従来のリレーショナルデータベースの基本である、「データベースをハードディスクに保存する」「行指向でデータを処理する」のいずれとも大きく異なる技術でもあります。ですから、これらが本当に実用的なものになるのかどうか、疑問に思うのは自然なことです。例えば次のような疑問が浮かびます。
- わざわざインメモリデータベースにしなくても、従来のデータベースを大きなメモリを積んだサーバで走らせれば全部メモリに載るではないか。なぜインメモリデータベースが必要なのか?
- インメモリデータベースでは、マシンが落ちたらメモリ上のデータは全部消えてしまうのではないか。大事なデータベースを任せられるのか?
- カラム型データベースの構造は集計などの高速処理に向いているが、行ごとの操作が必要なトランザクション処理には向いていないはずだ。本当にカラム型データベースで実用的なトンランザクション処理ができるのか?
特にSAPのHANAは、最初からインメモリデータベースとカラム型データベースの技術を核に設計、実装されたものであり、その仕組みを調べることで上記の疑問に対する答えが見つかるはずです。
本記事では、インメモリデータベースについてはオラクルのTimesTenとSAPのHANAを、カラム型データベースではHANAの仕組みをおもに見ていくことで、上記の疑問に答えつつ、インメモリデータベースとカラム型データベースがどのような技術であり、どんな可能性を持つのかを、本記事も含めて5本の記事で調べていきます。
(本記事を書くにあたり、SAPジャパンから資料の提供やブリーフィングの機会をいただきました。ただし本記事ではPublickeyが独自に調査、分析した内容などを含むため、万が一間違いなどがあった場合にはその責任はPublickeyにあります。また本記事はタイアップ記事ではなく、Publickeyが独自に企画、執筆したものです)
≫次の記事「従来のデータベースをメモリに載せるだけではだめなのか? インメモリとカラム型データベースの可能性を調べる(その2)」に続きます。
インメモリとカラム型データベースの可能性を調べる
- インメモリデータベース、カラム型データベースは使い物になるのか? インメモリとカラム型データベースの可能性を調べる(その1)
- 従来のデータベースをメモリに載せるだけではだめなのか? インメモリとカラム型データベースの可能性を調べる(その2)
- インメモリデータベースでサーバが落ちたらデータはどうなる? インメモリとカラム型データベースの可能性を調べる(その3)
- カラム型データベースはなぜ集計処理が高速で、トランザクションが苦手なのか。インメモリとカラム型データベースの可能性を調べる(その4)
- カラム型データベースでトランザクション処理を実現するカラクリとは? インメモリとカラム型データベースの可能性を調べる(その5)
あわせて読みたい
従来のデータベースをメモリに載せるだけではだめなのか? インメモリとカラム型データベースの可能性を調べる(その2)
≪前の記事
Google App EngineがPHPに対応、限定プレビューを開始。ローカルでPHP環境を再現するSDKも公開