Oracle Database In-Memoryによるインメモリ化で高い効果が得られる処理としては、大量データの全表走査や索引走査といった「ディスクI/Oの物理読込量が大きい処理」と、複数表を使った結合処理とフィルター条件の処理、集計演算処理など「大量行の表を含む分析クエリ」の2つが挙げられる。
このうち、ディスクI/Oの物理読込量が大きい処理が速くなる理由は明白だろう。大量のディスクアクセスが発生する処理は、ディスクI/Oがボトルネックとなり、レスポンスが悪化しやすい。インメモリ処理であれば、そのボトルネックを解消できるため、大きなパフォーマンス改善が見込めるのだ。
中間一致検索のような処理でも、Oracle Database In-Memoryは高速だ。それを支えているのがディクショナリ圧縮である。カラムに含まれる値の種類が少ない、つまりカーディナリティが低ければ、ディクショナリ圧縮したデータに対する中間一致処理は全行評価よりも効率化され、迅速に処理を完了できるのだ。
なお、「広大なバッファキャッシュを確保し、全データをキャッシュ内に保持することで、インメモリ処理と同等のパフォーマンスが得られる」と考えるのは間違いである。実際、オラクルが実施した検証では、3億行から5000万行を抽出するSQLについて、インメモリ処理はフルバッファキャッシュよりも表で31倍、索引で44倍も速いという結果が出た。必要なカラムにしかアクセスしないカラム型が使えること、ディクショナリ圧縮やインメモリストレージ索引などの機構、そしてSIMDの活用といった高速化の仕組みにより、同じメモリ上の処理でもこれだけの性能差が生まれるのだ。
ただし、Oracle Database In-Memoryを使えば、全ての検索処理が速くなるわけではない。その具体例として挙げられるのが、索引によって最適化された処理だ。例えば、数千万、数億の行から数十、数百行を取得するようなSQLの場合、索引を使った方が高速である。また、CPUのコア数が少なく、パラレルクエリの並列度を高められない環境でも、索引の方が速いケースがある。
Oracle Database In-Memoryは、既に世界中で多くの企業が導入を進めている。例えば、国内では、ある金融機関が同製品を活用して情報系システムのデータベース集約を果たしている。
この金融機関では、Oracle Databaseとデータウェアハウス(DWH)専用機が混在することで、基盤が複雑化するという問題を抱えていた。そこで、情報系システムの基盤をOracle Database 12cに集約し、さらにOracle Database In-Memoryを導入。加えて、Oracle GoldenGateを使って基幹系システムとの間でデータを同期し、そのデータをOracle Database In-Memoryで高速に分析する環境を整えている。
この事例で参考にしたいのは、基幹系システムとのデータ連携だ。Oracle Database In-Memoryを使って高速なデータ分析環境を構築したいが、基幹系システムのデータベースをOracle Database 12cにアップグレードするのはタイミングなどの面から難しいというケースは少なくないだろう。その場合は、Oracle GoldenGateなどを用いて基幹系と情報系のデータベースを同期し、情報系だけをOracle Database 12cにアップグレードすることで、Oracle Database In-Memoryを使ったデータ分析基盤を構築できるのである。
また、海外企業の活用例として、米国の大手食品会社ゼネラル・ミルズを挙げておきたい。同社は既存のデータ分析環境に関して、ハードウェアリソースの限界から全てのデータをDWHに集約できないという問題を抱えていた。そのため、サンプリングした約3分の1のデータだけを使って分析作業を行っていたが、全てのデータを使いたいという要望が強く、自由検索や非定型の検索に対するニーズも大きかったことから、システムの刷新に踏み切った。Oracle Exadata X4-2とOracle Database In-Memoryを組み合わせ、全てのデータを集約してインメモリ処理する基盤を導入したのだ。このシステム刷新により、全データを対象にした分析業務や検索が可能になった他、数日を要していたレポート処理が1時間以内に終わるなど、パフォーマンス面でも大きな成果が得られたという。
スイスの大手保険会社モビリアも、Oracle Database In-Memoryの活用を進める1社だ。同社は従来、メインフレームのデータベースで保険証券の詳細データを保持し、その内容をDWH専用アプライアンスにETLツールでコピーしてデータ検索などを行っていたが、パフォーマンスに問題を抱えていた。これを解消するために、同社はOracle Database 12cとOracle Database In-Memoryを導入。この新環境へ移行したことで、ETL処理なしでOLTPデータを直接分析することが可能となった他、システムのパフォーマンスも大幅に改善したという。
モビリアの事例で注目すべきは、旧システムからの移行がわずか3日間で完了したことだ。Oracle Database In-Memoryであれば、アプリケーション側の改修が不要であるため、このように短期間での移行が可能なのである。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:日本オラクル株式会社
アイティメディア営業企画/制作:@IT 編集部/掲載内容有効期限:2016年3月15日
驚異的なパフォーマンス、優れた運用効率、最高の可用性とセキュリティ、クラウド対応を実現するOracle Exadataとの統合、クラウド、可用性や運用管理など、次世代データベース基盤構築のために参考になる必見資料をまとめてご紹介いたします。