テクノロジー・リーダーシップ

クラウド環境でのインメモリ処理技術の役割

記事をシェアする:

インメモリ技術は2010年ごろに華々しく登場し、色々な技術が登場しました。現在もオープンソースを中心に幾つかの製品が提供されています。例えば、顧客IDに紐づく顧客データをインメモリデータストアにキャッシュするというのはよく知られた方法でしょう。ここでは、このようなインメモリ技術がクラウド環境にどのように貢献するかを考えます。

インメモリ処理技術とは

インメモリ技術のタイプとしては、大別してインメモリ・リレーショナルデータベース(IM-RDB)とインメモリ・キーバリューストア(KVS)が登場しました。前者は全データをメモリ上で管理するリレーショナルデータベース(RDB)で複雑な検索処理をこなせるものです。

スケールアウト型ではなく、一つのサーバが全データを保持するというものです。一方、後者はキーを指定してデータを取得するというシンプルなデータモデルであり、複雑な検索には適していないものですが、スケールアウト型であり、多数のサーバにデータ全体を分散配置させることで、高い台数効果を得られるというものです。

通常のRDBもメモリ上でデータを保持するキャッシュ機構を持っています。では、インメモリ技術はそれ以上に速いのでしょうか?答えはYESです。IM-RDBもKVSもそれより数倍高速です。その理由は内部処理の簡素化にあります。

通常のRDBはデータをストレージに格納することを前提とし、そのキャッシュとしてメモリ上にデータを保持します。ストレージ・アクセスは遅いため、そこを効率化するための「ページ」と呼ぶ数KBのデータ構造でメモリ上に保持します。あるデータの取得では、インデックスを参照してデータが存在するページを取得し、そのページ上の先頭からXXバイトのところからデータを読みます。

メモリ上の処理性能は、CPUキャッシュやメモリアクセス数なども影響しますが、CPU処理量が大きく影響します。乱暴に言えばCPU処理量が半分になれば処理速度は2倍になります。インメモリ技術はページ管理が不要なため内部のデータ構造を簡単にでき、データにアクセスするのに要するCPU処理量を大幅に削減できるのです。一般的にKVSがIM-RDBよりも高速と呼ばれる理由のひとつもここにあります。キーを指定してデータを取得する単純な処理によりメモリ上でのデータ構造をIM-RDBよりも単純化でき、高い処理能力を実現しています。

このようなインメモリ技術は、高性能を実現する技術として使われてきました。逆に言えば、高性能のサーバ計算機を使ってRDBで実現できる場合にはあまり使われませんでした。その理由は熟知しているRDBと高性能なサーバ計算機で実現できるのあればその方が確実で簡単であるということにあると思います。

クラウドでのインメモリ処理技術利用の意義

なぜ多くの人がクラウドに移行したいと考えているのでしょうか?細かく考えれば色々と理由はありますが、究極的にはコストダウンでしょう。では、インメモリ技術はコストダウンに貢献するのでしょうか?答えはYESです。先述したように、多くの人はインメモリ技術は高速処理を実現するための技術と捉えています。その考えは誤りではないのですが、正解とは言えません。性能要件を次の3つに分けて考えるとわかりやすいでしょう。

  1. 通常のRDBを使っても容易に実現できる性能
  2. 通常のRDBを使っても実現できるが高性能なサーバ計算機を多数要する性能
  3. 通常のRDBでは実現困難な性能

1.に対してはクラウドでもそれ程高価にならず実現できるので、インメモリ技術が登場することはありません。
3.に対してはインメモリ技術が必須でしょう。

問題は2.のケースです。

インメモリ技術を使わなくても実現できますが、高性能なサーバ計算機が必要になったり、多数のサーバ計算機が必要となるケースです。このようなケースではインメモリ技術を使うことで大幅にサーバ計算機台数を削減でき、全体コストを削減できる可能性があります。これはクラウドの目的であるコスト削減に大きく寄与します。このような台数削減はオンプレミス環境でも同じですが、クラウド環境ではコストがより重視される傾向にあります。その結果、台数大幅削減によるコスト削減は事業者にとって大きなメリットに感じることでしょう。

インメモリ処理技術適用での考慮点

インメモリ技術の利用では、どのインメモリ技術をアプリケーションのどの部分に使うかがカギとなります。第一のポイントはシステム全体の性能に大きく影響する部分にインメモリ技術を使うことです。例えば、検索処理が全体性能の大きな位置を占めるのであればそこをインメモリ技術で高速化するのが良いでしょう。

セッション情報のアクセスが大きな位置を占めるのであればそこをインメモリ技術で高速化すると効果的です。第二のポイントはどのようなインメモリ技術を使うかです。RDBは高い汎用性で様々な用途に使えます。

しかし、インメモリ技術は汎用性をある程度犠牲にして高速化を実現しています。つまり、何らかの制限があるので、アプリケーションの性質に合わせた技術を使う必要があります。以下にいくつかの代表的な例を示します。

ネット販売の商品検索のように様々な条件で検索する処理にはIM-RDBが適しています。IM-RDBには複数サーバでデータをコピーする機能を提供しているものもありますので、全商品情報を持つIM-RDBを複数配置させることも可能です。ただし、複数配置する場合は更新を一か所のデータベースで行い、非同期に他データベースへコピーするなどの工夫が必要です。

Webコンテナのセッション情報を保持するのであればKVSが適しています。これは顧客のキー情報からセッション情報を持つデータを取得できます。KVSはスケールアウトとの親和性が高いです。一方、条件を指定した検索には不向きです。幾つかのKVS製品は検索機能も提供していますが、それほど高速ではなく、全サーバで検索処理を行うので台数効果もなく、これを多用すると性能低下を招くので注意が必要です。

検索・更新処理共に顧客のキーに関係づけられるデータ群で閉じるアプリケーションでは「アクター」という概念に基づいたインメモリ処理技術が適しています。例えば、外国為替取引処理の場合は、取引処理は顧客口座毎に行われます。

ある顧客口座の処理で別の顧客口座のレコードにアクセスすることはありません。一見するとKVSでもよいのではないかと思われますが、顧客口座に関するデータの種類は数十種類でレコード数も多数になりデータ構造は複雑です。

KVSではキーに関連付けられるレコードはひとつですので、複雑な口座情報を扱うことはできません。東京ソフトウェア&システムズ開発研究所では「アクター」モデルを利用したインメモリ技術「IBM Agent Framework for DataGrid XTP edition」を2012年に開発し提供しています。

すでにIBM Connected Vehicle Insights製品や複数の外国為替取引システムで利用されています。処理ロジックはデータが置かれるサーバプロセス上に配置され、データにローカルメモリ・アクセスでアクセスできます。この技術ではキーに関連するレコードをルートとしたツリー上のレコード群でデータを管理します。

このルート・レコードを頂点としたレコードのツリーでひとつの「アクター・オブジェクト」を表現します。データの複数ノードへの分散配置機能、データ冗長化機能、バックエンドのRDBへの非同期連携機能も提供します。

まとめ

クラウド環境では、コストダウンが重要になります。インメモリ技術を適切に使用することで、要求される性能要件を満たすシステムのノード数を削減でき、それによりコスト大幅低下の可能性があります。

IM-RDBは通常のRDBのオプション機能として提供されているものやオープンソースがあります。KVSに関しては多くのクラウド環境が提供しています。「アクター」に基づくインメモリ技術はIBM独自の技術で商用利用可能です。

これらを使うにはアプリケーションの特徴を考慮して適切なインメモリ技術を適切に利用する必要がありますが、得られるメリットも大きいので、システム設計時にインメモリ技術利用の可能性も検討してはいかがでしょうか。


山本 学
筆者:山本 学
東京ソフトウェア&システムズ開発研究所、Senior Technical Staff Member/AoT Member

IBM入社後東京基礎研究所にてインメモリ技術の研究をリード。2008年にソフトウェア開発研究所に異動。アクターモデルとインメモリ技術を融合させたAgent Frameworkを開発。この技術をコネクテッドカーのクラウド側を構築するための「IBM Connected Vehicle Insights」製品に適用。現在同製品の技術リーダー。

More テクノロジー・リーダーシップ stories
2022年12月16日

女性技術者がしなやかに活躍できる社会を目指して 〜IBMフェロー浅川智恵子さんインタビュー

ジェンダー・インクルージョン施策と日本の現状 2022年(令和4年)4⽉から改正⼥性活躍推進法が全⾯施⾏され、一般事業主⾏動計画の策定や情報公表の義務が、常時雇用する労働者数が301人以上の事業主から101人以上の事業主 […]

さらに読む

2022年12月9日

Qiskit Runtimeで動的回路を最大限に活用する

私たちは、有用な量子コンピューティングのための重要なマイルストーンを達成しました: IBM Quantum System One上で動的回路を実行できるようになったのです。 動的回路は、近い将来、量子優位性を実現するため […]

さらに読む

2022年12月8日

Qiskit Runtimeの新機能を解説 — お客様は実際にどのように使用しているか

量子コンピューターが価値を提供するとはどういうことでしょうか? 私たちは、価値を3つの要素から成る方程式であると考えます。つまりシステムは、「パフォーマンス」、「機能」を備えていること、「摩擦が無く」ビジネス・ワークフロ […]

さらに読む