クラウド時代のデータ処理を支える分散KVSの可能性


唐沢正和
2012/5/23

“クラウド”や“ビッグデータ”が普及期に入り、高速データ処理のニーズは確実に高まっている。その主流はインメモリ型のデータ処理だが、別のアプローチとして注目を集めているのが「分散KVS」だ。今回は、分散KVSについて話を聞いた(編集部)

初期コストを抑え、容易にスケールアウトできる分散KVS

 企業や個人の扱うデータ量が増大し続ける一方で、ITシステムの大規模化、さらにはクラウド導入へのニーズが急速に高まりつつある。

 こうした中、膨大なデータを高速処理する手法として、現在主流となっているのが、並列分散・インメモリデータ処理だ。特に、金融機関を中心として、インメモリ型データベースが積極的に活用されており、コンピュータが自動取引を行う“アルゴリズム取引”で大きな効果を発揮している。

 さらに、このインメモリ型データベースとは別のアプローチで、クラウド環境における大規模データの高速処理を可能にする手法として注目を集めているのが、「分散KVS(キーバリューストア)」だ。Facebookやmixiなどが「memcached」でWebアプリケーションのスケーラビリティを向上させたり、googleが大規模分散データベース「BigTable/HBase」を採用しているのは有名だ。

 KVSでは、保存したい「値(Value)」に任意の「キー(Key)」を組み合わせ、KeyとValueで一組のペアとして保存する。データを取得する際にはKeyを指定して、Valueを取り出すシンプルな仕組みだ。Keyに応じて、複数台に分散して保存できるためスケールアウトしやすく、サーバを追加することで簡単に処理を高速化できる点が特徴だ。

 例えば、新たにクラウドサービスを構築する際に、当初は少ない台数で運用し、後からサーバを足してスケールアウトしていく場合などに有効だ。実際に、負荷が集中するソーシャルアプリなどのWebアプリケーションでは、バックエンドにRDBを利用しつつ、キャッシュとしてKVSを組み合わせる方法が一般的になっている。

 RDBと比較すると、スケーラビリティやレイテンシの面で高いパフォーマンスを発揮することができる。他方で、RDBで備えている機能であっても、KVSでは実現できない機能がいくつも存在する点に注意が必要だ。

信頼性の高いKVSを求めて開発

 すでに各社からインメモリ型分散KVS製品がリリースされているが、今回はその一例として3月にインメモリ型分散KVS製品「uCosminexus Elastic Application Data store」(以下、EADs)をリリースした日立製作所に話を聞いた。EADsは日立の自社開発製品で、自社開発したJava VM上で動くKVS製品だ。

  日立製作所 情報・通信システム社 ITプラットフォーム事業本部 第2AP基盤ソフト設計部 主任技師の梅田多一氏は、「2000年までは、当時のシステム要件のほとんどをRDBのSQLで実現することができた。しかし、近年ではシステム要件の幅が広がり、SQLでは対応し切れない要件が発生し、それぞれの用途に応じたNoSQLソフトウェアが登場してきている。その1つがインメモリ型分散KVSであり、クラウド時代の超大量・高速データ処理を支えるソリューションとして、今後さらに重要性が高まることが予測される」と、KVSソフト開発の背景を述べている。

 同社がEADsの開発に当たって最も重視したのが、高信頼性だと言う。KVSは、トランザクション処理ができないため、RDBよりも信頼性が落ちると言われたり、データの一貫性が弱いと評されることがある。それに対して、同社では高信頼性を実現する機能として、データ書き込み時にデータの複製を生成(レプリケーション)して多重化。障害発生時には複製したデータへのアクセスに切り替え、システムの無停止化を実現した。

 「クラスタ内のサーバ同士は、自身の構成情報を含んだハートビートを送り合うことで、お互いに状態を監視している。もし、ハートビートが確認できないサーバが発生した場合、自身の障害通報または周囲の障害検知により障害サーバを的確に検出し、クラスタから切り離して残りのサーバ群で継続運用を行う。これによって、分散ネットワーク上でのシステム障害を高精度で排除することが可能になる」(梅田氏)。

 そのほか、複数サーバにまたがる処理の履歴を関連付けて取得する障害解析トレースなど独自の機能を備え、複雑なシステム構成においても障害解析ができるようにした。

 現在、EADsは数社でのテスト導入が進められている段階で、本格導入はこれからだが、現状で同社が把握しているインメモリ型分散KVSの導入メリットが大きいユースケースとして梅田氏は、「サービスの高速化」「データ転送の効率化」「サービスの無停止化」の3つのケースを挙げる。

 まず、「サービスの高速化」は、KVSを“リードキャッシュ”として利用するケース。データの保存・更新を行うRDBからKVSへ、必要なデータを事前に読み込んでおき、データを参照する際にはKVSにアクセスを行う。これにより、参照系と更新系のアプリケーション処理を完全に分離し、RDBへの直接アクセスを回避することで、サービスのレスポンスとスループットの向上を実現する。例えば、インターネットトレードサービスの高速化が、このユースケースに当たる。

 次の「データ転送の効率化」では、“ライトバッファ”としてKVSを利用するケース。1つ1つの情報は少量でありながら、集約すると膨大になるデータをKVSにまとめて転送し、蓄積したデータを定期的または一括でRDBに反映させる。これにより、システム負荷の平準化を実現する。梅田氏は、「顧客へのアプローチでは、このユースケースへの引き合いが最も多い。代表的な用途は、スマートメーターや地域端末などの情報集約で、RDBに直接データを格納するのではなく、KVSが間に入って緩衝材としての役割を果たすことで、効率的なデータ転送を行うことが可能となる」と語り、インメモリ型分散KVSは“ライトバッファ”としての活用が最も効果が高いと強調した。

 3つ目の「サービスの無停止化」は、“中継サーバ”としてKVSを利用するケース。アプリケーションからのデータをKVSに分散・多重化してバッファリングし、定期的または常時RDBに反映させる。これにより、システムのSPOFを排除して、サービスの継続性を確保できる。このユースケースの代表例としては、オンラインショッピングシステムの無停止化が挙げられる。

 日立では、今後EADsを単なるインメモリ型分散KVS製品というだけでなく、クラウドサービスプラットフォームの構成製品の1つとして、アプリケーションの用途や、データ・データアクセスの特性に応じて、ストリームデータ処理基盤やインメモリ型データベースなどと組み合わせて適用し、システム全体の最適化を提案していく考えだという。

Databaseフォーラム全記事インデックス



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間