特集
» 2016年06月15日 10時00分 公開

IT導入完全ガイド:インメモリ? クラウド? データベースの新技術とライセンス問題を整理する (1/3)

企業ITの中のデータベースはアプリケーションとは切っても切れない関係。ライセンスは? クラウドインフラへの対応状況は? 運用実務の課題や疑問を整理する。

[宮田健,キーマンズネット]

 データベース高速化のカギはいまも昔も「I/O」にある。あらゆるデータの出入り口のI/O速度をそろえていくのがパフォーマンスチューニングのポイントといえる。前編で言及したように、この数年は、ディスクストレージをより高速なフラッシュストレージに置き換えていく選択が有効視されている。またトランザクション処理の応答性能を高める場合は、キャッシュに高速ストレージを採用する手法も、現実的な価格帯で選択できるようになってきている。

 しかし、さらなる高速化を求める場合、データベースエンジンが持つ高速化の仕組みをフルに活用する必要がある。特にOracle DatabaseやMicrosoft SQL Server、SAP HANAなどは「インメモリデータベース」として活用する方法があり、これによる高速化が期待できる。これらのデータベースエンジンは「インメモリ領域を活用する」ことは一致しているものの、実装の方向性から得意な分野がそれぞれ異なる。では、それぞれの特長を見てみよう。

データベースの必須機能になったインメモリ機能と各社アプローチの違い

 2016年は主要な商用データベースソフトウェアの新バージョンが出そろう時期でもある。どの製品も直近のITインフラに求められる機能を盛り込んでいるが、中でも各製品が注力しているのが「インメモリ」機能だ。文字通りデータベースを高速なメモリの上に置くことでさらに処理速度を高めていこうというものだ。

 メモリからストレージへの書き込みといった「書き込み完了」を待つ時間をデータベースの応答性能と分離できるようになる。

Oracle Database 12c――既存環境を生かしつつ、高速化が必要なものをインメモリで処理

 Oracle Database 12cの場合、インメモリオプションを「既存環境でもそのまま使える」ことが重視されている。そのため、高速化したいテーブルのみをインメモリ領域に持つことで、処理の高速化を実現している。

  Oracleではこれまでもキャッシュ領域を活用し、より高速な処理が行えるよう最適化実装が行われ続けていたが、その延長での実装が行われている。

図1 Oracleは既存環境との互換性を重視 図1 Oracleは既存環境との互換性を重視。既存環境との互換性を重視した実装。検索高速化のためにデータを二重持ち。高速化したいテーブルだけを指定して、行/列指向の両方でデータを持つ。列指向データはメモリ上に配置(出典:日本ヒューレット・パッカード)

SQL Server 2016―トランザクション処理をより重視した実装

 マイクロソフトのSQL Serverでは、インメモリOLTPオプションにより、トランザクション処理の高速化をより重視した実装になっている。高速化したいテーブルをメモリ最適化テーブルとして指定し、行指向の形でメモリ上に置く。メモリ最適化テーブルには、これまで外部制約不可や並列クエリがサポートされていないなどの制限が存在していたが、2016版ではこの制限も緩和されているという。

図2 SQL Serverでは高速化したいテーブルを明示的にメモリ内に置く 図2 SQL Serverでは高速化したいテーブルを明示的にメモリ内に置く。OLTP高速化を重視した実装(出典:日本ヒューレット・パッカード)

SAP HANA――全てをインメモリに

 特徴的なのはHANAだ。もともとインメモリを前提としたエンジンであるため、処理自体もそれに最適化した仕組みになっている。列指向のデータを保持し、定期的にログに書き込む以外はメモリ上で完結する。行操作は差分を保持する「デルタストア」を利用し、ロックが不要な仕組みを持っていることも特長だ。ただし、全てのデータをメモリ上に置く必要があるため、その分のメモリ容量およびライセンスが必要となる。

図3 SAP HANAは全てをメモリ上に置くことが基本だ 図3 SAP HANAは全てをメモリ上に置くことが基本だ。ネイティブなインメモリデータベースを列指向で実装(出典:日本ヒューレット・パッカード)
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

会員登録(無料)

ホワイトペーパーや技術資料、導入事例など、IT導入の課題解決に役立つ資料を簡単に入手できます。