[速報]Oracleデータベースをインメモリ化する「Oracle Database In-Memory」、性能を数百倍高速化、来月出荷へ
米オラクルは、Oracle Database 12cをインメモリデータベース化し、従来と比較して数百倍の性能向上を実現する「Oracle Database In-Memory」を来月7月に出荷すると発表しました。
Oracle Database In-Memoryは、昨年9月に行われたOracle OpenWorld 2013の基調講演で発表されたもの。今回の発表には、そのときと同様に同社CEOのラリー・エリソン氏が登壇、熱のこもった説明を行いました。
エリソン氏は「Oracle Database In-Memoryは、アナリティクス処理を10倍も100倍も高速化し、OLTPも2倍、3倍と高速化する。しかもOracle RAC(Real Application Cluster)によってスケールアウトしつつ、アプリケーションからは透過的で、可用性もこれまでと変わらない。導入も簡単だ」と、特徴を説明しています。
インメモリデータベースの分野では、SAPが「SAP HANA」をすでに出荷済みで、インメモリデータベースとして高速なアナリティクス処理とOLTPの両立を実現しています。オラクルは以前からインメモリデータベースとして「Oracle TimesTen」、インメモリグリッドの「Oracle Coherence」などを提供していましたが、メインストリームとなるOracle Databaseのインメモリ化ではSAPに後れをとってしまいました。
エリソン氏は、Oracle Databaseのインメモリ化に時間がかかってしまったことを認めつつ「アナリティクス処理だけでなくOLTPも高速化し、しかも従来のアプリケーションがそのまま動く、この3つを実現しつつ、スケールアウトし、フォールトトレンラントも実現している。こうした他社ではできないことを実現するために時間がかかってしまったのだ」と、できあがった製品の競争力を強調しています。
エリソン氏の発表の内容を基に、Oracle Database In-Memoryの仕組みと特徴を紹介しましょう。
アナリティクス処理をカラムストアで高速化
Oracle Database In-Memoryは、OLTP向けの従来型のロー型ストアと、アナリティクス向けのカラムストアの両方を備えている。
カラムストアはデータを圧縮して保存するため、メモリ量の20倍から30倍のデータを扱える。
カラムストアに対してはプロセッサのコアごとに処理するため、最新のマルチコアプロセッサであれば非常に高速かつ並列にデータ処理が可能。
カラムストアではテーブルのジョインも数十倍以上高速になり、複数の次元を持つキューブ型のデータ処理なども非常に得意。
OLTPをインデックス削除で高速化
アナリティクス処理だけでなく、OLTPも高速化できる。
従来のOLTPデータベースは、OLTPのためのインデックスに加え、アナリティクス処理用のインデックスも10から20と多数設定されている。
この多数のインデックスが、OLTPにおけるデータの追加や削除といった処理を遅くしているのだが、アナリティクス処理をインメモリで高速に実現できるようにしたため、これらのインデックスは不要になる。
テーブルから不要なインデックスを落としてしまえば、OLTPも高速になる。
「(OLTPによって)データが変更されれば、インメモリのカラムナストアのデータも同期しなければならないが、おおむねこれは非常に高速に行われる」(エリソン氏)
RACに対応したスケールアウト、可用性を実現
Oracle Database In-MemoryはRACのノードごとに働くため、RACと同様にスケールアウトする。
他社のインメモリデータベースには、すべてのデータをインメモリに乗せるシンプルなものもあるが、実際のデータのうちどれだけ本当にメモリに乗せて高速処理する必要があるのか、どれだけメモリのコストをかけるのか?
Oracle Database In-Memoryはすべてのメモリに乗せる必要はなく、アクティブな部分だけをメモリに乗せればいい。フラッシュメモリやディスクといった階層構造を利用でき、非常に経済的だ。
RACの可用性はそのまま利用できる上、インメモリも二重化できるため、万が一いずれかのノードが止まっても処理を続けることができる。
簡単に導入でき、アプリケーションの変更は不要
Oracle Database In-Memoryの導入はきわめて簡単だ。利用したいメモリサイズを設定し、インメモリ化したいテーブル、もしくはパーティションを指定する。
あとはOLTPから不要になったインデックスを落とせば、OLTPも高速化する。
アプリケーションからはまったく透過的で、インメモリの利点を得るのになんの変更もいらない。高速になったデータベースの上でそのまま動き続ける。しかもOracle 12cのマルチテナント機能など、これまでの機能はまったくそのままだ。
Oracle Database In-Memoryは、Oracle Database 12cがサポートするすべてのハードウェアで動作し、7月に出荷予定。
あわせて読みたい
Google Compute Engineに続き、Google App EngineもDockerサポートを発表。Dockerをクラスタ化して管理するツール「Kubernetes」をオープンソースで公開
≪前の記事
2014年5月の人気記事「すでにGoogleは全部のソフトウェアをコンテナに乗せている」「今からでも間に合うDockerの基礎」「Stack Overflow日本語版開設へ」