Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Sawa_Ito
Product and Topic Expert
Product and Topic Expert
0 Kudos

このブログは、2013 年 7 月 5 日に SAP ジャパン公式ブログに掲載されたものを SAP ジャパン公式ブログ閉鎖に伴い転載したものです。

 




 

こんにちは、SAP ジャパンの naotosakai です。暑い中皆様いかがお過ごしでしょうか?今回も前回に引き続き SAP IQ 16の新機能のいくつかを詳細に解説したいと思います。

OLTP 処理の対応:ローレベルバージョニング


前回の最後に「インメモリーローレベルストア」と書きましたが正式名称は「ローレベルバージョニング」となります。Sybase 社が販売していたデータベース製品は対象の用途、対象の業務規模等に応じて複数あり、「これ一つでどんなものにも対応」というデータベース製品はありません。これらのデータベース製品はそれぞれの用途に応じて専用の設計がされています。SAP IQ はビッグデータの解析に特化された列指向データベース製品であり、OLTP 系処理は苦手としています。

例えば SAP IQ は複数のユーザーが一つの表に対して同時に書き込み系の処理を行うことが仕様上できません。(注:一つの表に対しての一つの書き込み系の処理と複数の読み込み系の処理は同時に行うことができますよ。)片方のユーザーのトランザクションが完了するまでもう一人のユーザーは待ち状態、もしくはロック待ちでエラーとなります。これは SAP  IQ はデータウェアハウス用であり、データウェアハウスにおいてデータの書き込み系処理はバッチや SAP Data Services などの ETL ツール等で管理者の管理のもと行われるという想定で、OLTP 的に複数のユーザーが同時に書き込みを行うという状態は設計思想に含まれていないためです。そのため昨今増えてきたデータウェアハウス上の少量のデータを Web アプリから修正するなどという要求に対しては SAP IQ 15.4 までは少々トリッキーな手段を用いないと、処理の同時並列性の面で難しいという事が言えました。

 

SAP IQ 16 ではローレベルバージョニング(以下 RLV )という機能が追加され、このような要求に簡単に応えることができるようになりました。これは「指定したテーブルにインメモリーのデータ領域を追加する」という機能です。「指定したテーブル」の通りこの機能はテーブル単位で有効・無効の設定が可能で、有効にしたテーブルのみで使用できます。


RLV 機能は上記の様にメモリー上に作成するインメモリー RLV ストアとディスク上に作成する RLV DB 領域の 2 つが主となり構成されます。RLV の使用が宣言されたテーブルに対しての書き込み系処理はインメモリー RLVストア、つまりはメモリー上の領域に対して行われ、その後ディスク上の IQ ストアに対して定期的にマージ処理が行われます。

例えば Insert によるデータ追加はメモリー上の領域に対して行われます。(これは非常に高速に終了します。)Delete はメモリー上の領域に対して「削除した」という情報を書き込むという処理で行い、Update は削除と挿入の組み合わせとしてメモリー上の領域に書き込まれます。そしてこれらの操作は定期的に行われるマージ処理でディスクに反映されるという仕組みです。前回解説したデルタマージと同様にマージされる前はデータがディスク上とメモリー上に分散することになりますが、オプティマイザはそれをきちんと認識しますので開発者側がそれを考慮する必要はありません。

RLV DB 領域は「DB 領域」となっていますが、実質「ログ」が格納されます。インメモリー RLV ストアはメモリーですのでマージされる前に電源断などが発生した場合インメモリー RLV ストアに対しての作業内容が失われることになります。そのためトランザクションがコミットされた時点で同期的に RLV DB 領域にその内容を書き込みます。そしてマージが完了すると RLV DB 領域の内容はクリアされます。もしマージ前に電源断などが発生した場合、RLV DB 領域の内容を用いてリカバリーが行われますので最終コミット時点まで復旧が可能です。

この機能ですが現在のところ「マルチプレックス環境では使用できない」という制限があります。また、SAP ASESAP SQL Anywhere、他社 RDBMS の置き換えとして OLTP システムでバリバリご使用いただくという用途に向くとは言い難いのが現状です。ただし、これまで対応困難であった OLTP 系処理が SAP IQ 上で行えるようになりましたので先に挙げましたオンラインでのデータ修正、データ追加など単純な OLTP 系処理にぜひご利用いただければと思います。

スケールアウト構成での機能拡張:マルチプレックスの拡張


新機能の解説に入る前にRLVの最後にも出てきました「マルチプレックス(Multiplex)」という機能について解説しましょう。


 

マルチプレックスは SAP  IQ のスケールアウト機能となります。これは共有ディスクグリッドテクノロジーであり SAP  IQ データベースサーバーを複数台のマシンで構成することで性能と可用性を同時に向上させることができます。また、特別なハードウェア、オペレーティングシステムを使用するのではなく通常のハードウェア、オペレーティングシステムによって構成される環境のため総所有コストを低く抑えることができるというのも魅力の一つです。


 

マルチプレックス構成ではユーザーから要求された問い合わせが分散処理可能な場合、それぞれのサーバーノードに問い合わせを分散して処理させることができます。これにより処理の高速化を行うことが可能で、実際に 1 つのクエリを 3 ノードで分散処理させたところ処理時間が1/3になったという事例もあります。このように SAP  IQ ではビジネスの成長により使用しているハードウェアの処理能力が不足した場合でもハードウェアを買い換えるのではなく「ハードウェアを追加する」という対応を選択肢に入れることができます。ビジネスの成長に合わせて買い換えより低コストで性能と可用性を同時に向上させることが可能です。

SAP  IQ ではマルチプレックス機能周りにも手が加えられました。以下がトピックス的な機能となります。

    • データアフィニティ
      SAP IQ 15.4 までのマルチプレックスではクエリの分散の際に分散されたクエリの推定処理量と現在の各ノードのリソースの使用度合いにより分散されたクエリを割り当てるノードを決定していました。SAP  IQ 16 ではここに「ノードのキャッシュの状態」が追加されます。分散されたクエリの処理に必要なキャッシュを持つノードが存在する場合、そこに分散クエリを割り振ることでディスクからの読み込み量が削減されパフォーマンスを向上させることができます。




    • キャッシュヒット率の向上
      表のデータに変更があった場合のキャッシュの再作成のアルゴリズムが変更され、キャッシュのヒット率が向上しました。




    • トランザクションの復元
      マルチプレックス環境の分散処理は書き込み系処理にも適用されますが、分散書き込み処理中に処理を行なっているノード間の接続がどれか 1 つでも何らかの理由で切断した場合、これまでは分散して行っていたすべての処理が即時ロールバックされていました。SAP IQ 16 では指定した時間内に切断したノードとの接続を復旧すればその処理は継続させることができます。




    • テンポラリー領域の変更
      マルチプレックス環境において各ノード上でそれぞれ確保が必要だったローカルテンポラリー領域は必須ではなくなり、共有システムテンポラリー領域をその代わりに使用することができます。また、共有システムテンポラリー領域の代わりに各ノードのテンポラリ―キャッシュを使用するという機能が追加されました。



マルチプレックスは SAP IQ 15 より追加された機能です。SAP IQ 16 では熟成が進み無駄をなくし、更なるパフォーマンスの向上に繋げるようにしています。

 

さて、2 回にわたり SAP IQ 16 の新機能を解説させていただきましたがいかがでしたでしょうか?私見ですが SAP というアプリケーションベンダーとの統合で、Sybase 時代より「業務システムで使用する」が強く考慮され、より実践的な部分に手が加えられたなという印象があります。今後も旧 Sybase のデータベース製品は SAP の製品ラインアップとして発展していきますのでぜひともご利用いただければと思います。