佐藤氏は続いて、Oracle Database In-Memoryのアーキテクチャについて説明した。
Oracle Database In-Memoryの最大の特徴は、OLTP処理を得意とするロー(行)型のフォーマットと、集計や分析処理に向いたカラム(列)型のフォーマットの両方を、メモリ上に同時に展開して処理する点だ。つまり、どちらのタイプの処理もインメモリ上で高速に実行できる。
しかも、アプリケーション開発者は、どのフォーマットを使うのかを意識する必要はまったくない。
「メモリ上に展開した二つのフォーマット、すなわちロー型とカラム型のどちらを使うかは、オプティマイザーが適宜、自動的に判断します。つまり、アプリケーション側からは従来どおりにSQLクエリを発行するだけでよく、後はオプティマイザーに任せることで、ロー型とカラム型を意識せずに使い分けることができるのです」(佐藤氏)
2つのフォーマットが同時に存在するとなると、データの一貫性が気になるところだが、この点についても心配は無用だ。更新処理は必ずロー型フォーマットに対して行われ、その内容をカラム型フォーマットに反映する仕組みとなっているからだ。
「例えば、検索系の処理はオプティマイザーが自動的に判断してカラム型フォーマットで処理されます。もし、その直前にデータをアップデートしていた場合、最新の情報はリアルタイムにロー型からカラム型に反映されるため、検索処理でも常に最新のデータが対象になるのです」(佐藤氏)
また、佐藤氏は他のインメモリ製品との違いとして、テーブル作成時にロー型とカラム型を指定する必要がない点を挙げる。
「一般的なインメモリ製品では、テーブルを作成する時点でロー型か、カラム型かを指定しなければなりません。それに対して、Oracle Database In-Memoryでは、通常のロー型のテーブルをカラム型に変換し、両方をメモリ上に展開します。そのため、テーブル作成時にフォーマットを意識する必要はないのです」(佐藤氏)
次に佐藤氏は、Oracle Database In-Memoryが、いかに容易に導入できるのかを詳しく説明した。
佐藤氏によれば、Oracle Database In-Memoryの基本的な導入手順は、次の3つのステップからなり、「興味のある方は、すぐにでも試していただけるレベルの難易度」だという。
基本3ステップの1つに「メモリ上に展開(インメモリ化)するカラムデータの選択」というステップがあるが、実はOracle Database In-Memoryでは高速化したいデータだけをメモリ上に展開することが可能であり、導入時にそれを選択することができる。そのため、使用するメモリリソースを必要最小限に抑えたコスト効果の高い高速化が可能となっている。
「大抵のシステムでは、本当に高速化すべきデータは全体の10〜20%程度に過ぎません。それらを高速化するだけで、システムのパフォーマンスが数倍も向上する可能性があるわけです。Oracle Database In-Memoryでは、必要のないデータはインメモリ化しないことが可能であり、メモリリソースを無駄に消費することはありません」(佐藤氏)
また、オラクルはOracle Database In-Memoryでメモリ上に展開すべきデータを推奨するツールとして「Oracle In-Memory Advisor」を提供する予定だという。これは既存データベースのワークロードを自動的に分析し、インメモリ化することで最も効果が得られるオブジェクトのリストをランキングしてくれるというもの。ぜひOracle Database In-Memoryと併せて活用したいツールである。
なお、基本3ステップに「不要なインデックスの削除」というステップがあるが、これはカラム型を使うことでインデックスが不必要となるためだ。そもそもインデックスは分析処理(参照系処理)を高速化するための仕組みだが、これがOLTPなど更新系処理のパフォーマンスが低下する大きな要因となっていた。Oracle Database In-Memoryを使えば分析処理を大幅に高速化できるので、分析処理のためにインデックスを使う必要はない。これにより、OLTP処理の高速化も期待できるわけである。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:日本オラクル株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2014年12月31日
驚異的なパフォーマンス、優れた運用効率、最高の可用性とセキュリティ、クラウド対応を実現するOracle Exadataとの統合、クラウド、可用性や運用管理など、次世代データベース基盤構築のために参考になる必見資料をまとめてご紹介いたします。