第3回 モバイルクラウド環境におけるBig Data技術


モバイルクラウドとBig Data


 高速なモバイルネットワークインフラが充実して「モバイルクラウド」が普及してくると、いよいよBig Dataの時代を迎えます。

 モバイル機器からのインターネットアクセス環境が充分に整っていない時期には、極端に言えば、一家に1台程度のパソコンからのアクセスに限られていました。ところが、モバイルブロードバンドインフラやスマートフォンの普及とともに、日本では1億人以上のモバイル利用者がクラウドにアクセスします。また、普及しはじめたWiMAXや、まさにサービス開始を迎えるLTEサービスにより、M2Mと呼ばれる機器と機器間のデータ通信も活発となり、24時間休むことなくログデータが生み出されるはずです。

 前回でも述べたとおり、日本のメールサービスは携帯電話間でのやり取りが普及を促進しましたが、いまは携帯電話もパソコンも区別無くやり取りできることが当たり前になっています。このような環境の変化により、お客様のログやメッセージを携帯メールやPCメールといった別々のメールシステムで管理することから、やがてひとつのメールシステムに統合され、さまざまなデバイスからのログやメッセージがそこへ集中的に流れ込むようになっていきます。

 また、お客様は自分のライフログとしてあらゆるメッセージを数GBに及ぶメールボックスに保存します。一方のプロバイダ側としては、お客様の行動や嗜好(好み)をより深く把握するためにGPSやセンサーが把握した位置情報、履歴情報、SNS/ブログで紹介したコンテンツ、ブックマーク、リンクなども一元的に管理する方向をめざすはずです。

 こうしてモバイルクラウドに蓄積される履歴データは爆発的に増加し、Big Dataになり続けます。では、そのような環境に対応するためには、どのような技術が求められるのでしょうか。

モバイルクラウドが抱えるBig Dataの3つの課題


 モバイルクラウドのBig Dataに対応するということは、【1】Velocity(速さ)、【2】Volume(量)、【3】Variety(多様さ)の3つの課題を解決することです。すなわち、短時間での大量データ処理が求められ【1】、テラバイトやペタバイトという大量データを格納(ストレージ)でき【2】、多種多様なデータを同時に処理すること【3】が不可欠となります。

 これらの課題を低コストで解決していくための有力な手段として、「分散コンピューティング処理」と呼ばれるソフトウェア技術が注目されています。以下、課題毎に分散コンピューティングの適応をみていきましょう。

【1】Velocity:Big Dataを速く処理する
 Big Dataに限らず、システムにおいて高度なデータ管理をするためには、データベース管理システム(データベース、以下データベースとします)が必要になります。利用するデータベースの処理スピードが速ければ速いほど、データを速く処理することができるのは言うまでもありませんが、データベースにもいくつかのタイプがあり、管理するデータの種類や活用方法によって最適なものを選ぶことが重要になってきます。

 現在、企業が保有するデータを管理するために広く活用されているデータベースの種類に「リレーショナルデーターベース」(以下、RDB)があります。RDBのひとつの利点は、データの書き込み処理(更新処理)に対する「厳密さ」にあります。簡単に言えば、誰かが書き込み処理をしている時には、他の利用者による書き込みや読み出しができないように、関係するデータ領域(データテーブルと呼びます)をすべて閉鎖してしまいます。これをロック機能、または排他制御機能と呼びます。

 更新時にデータテーブルをロックするRDBの機能は、銀行決済などでは不可欠となっています。たとえば自分が口座からお金を引き落としているときに、他から支払いのための引き落とし処理が同時に行われてしまい最終の残高が合わなくなる、といった状況が許されないからです。自分が口座からお金を引き落としているときには、他からその口座に対する読み書きが行われることの無いようにロック(鍵)をかけるわけです。

 しかしながら、このようなRDB特有の厳密さは、Big Dataを速く処理するうえで適しているとは言えません。なぜなら、モバイルクラウドのように常に莫大なアクセスがあるところで使用するデータベースは、同時並行で多大な処理要求に応えていかなければならず、厳密にロックをかけていたのでは、すべての要求に応答するまでにたいへんな時間がかかってしまうからです。

 こうした状況から、RDBだけではない、まさにBig Dataでの利用に相応しいデータベースの開発が急速に進みました。そして、RDBにおいては主にSQLというデータベース言語が用いられることからNot Only SQL=NOSQLという総称で呼ばれることが増えてきました。2007年、Amazon.comは商品購入の申込受付のために「Dynamo」と呼ぶデータベースを開発し、その詳細について論文発表しました。この論文は、2006年に発表されたGoogleの論文「BigTable」とともに、Big Dataに最適なデータベース技術として大きな影響を与え、これらに触発されたオープンソースのデータベースが次々と開発されています(図1)。

図1 NOSQLプロジェクトの分類(主なプロジェクトを抜粋。白地はオープンソース)

図1 NOSQLプロジェクトの分類(主なプロジェクトを抜粋。白地はオープンソース)


 システムにおいてデータ処理を頻繁に行う場合、一般的にデータの厳密さは、格納データを「読み出す時」により強く求められるようになります。RDBは書き込み処理の厳密さに重きをおいて、結果的に読み出しの厳密さを保証しようとしますので、クラウドの実情に合わないケースがどうしても多くなってくるというわけです。

 たとえば、インターネットで商品を閲覧させ、購入の申込を受け付けるようなケースでは、申込履歴を見てもらう時(読み出す時)より、購入申込してもらう時(書き込む時)に高速処理が求められます。書き込み処理で遅延が発生してお客様を待たせてしまうのは最悪です。場合によっては購入の中止や先延ばしにつながってしまいます。こうしたインターネット特有の購買行動に配慮し、Dynamoでは「読み出しの際の厳密さ」については、結果としてデータの整合性がとれれば良いという水準としながら、「書き込む速さ」を追及する、RDBとは異なるタイプのデータベースとして発表されました。

【2】Volume:Big Dataのボリューム(量)を格納(ストレージ)する
 データの格納(ストレージ)は、ストレージ専用のサーバーを利用することが一般的です。そして、より高機能なハードウェアに買い替えていくことで拡張(スケールアップ)していきます。それに加え、耐障害性が高いがゆえに1台あたりの価格も高いことから、Big Dataに対応するためにはコストのかかる解決方法となります。

 しかし最近は、5000ドル(約40万円)PCなどとも呼ばれる汎用PCの内蔵ディスクも数テラバイトの容量をもつものが出てきました。これを利用し、複数台の汎用PCを並べて1つのストレージとして使用する手法が開発されています。

 この方法でストレージを確立するには、分散コンピューティング処理用ソフトウェアを利用します。また、信頼性を高めるために、仮に1台が壊れてもシステム全体としてはデータが紛失しないように複製(レプリカ)を用意するのが一般的です。

 この手法を取り入れ、ハードウェアに依存せずにソフトウェアの技術によってBig Dataに対応していくのが今後の主流となると見ています。その利点は、コスト面だけではありません。テラバイト級の内蔵ディスク容量をもつ汎用PCを数十台、数百台と並列に接続して使用することで、段階的に拡張(スケールアウト)していき、最終的にペタバイト級のBig Dataを格納することが可能になるというメリットが得られます。

【3】Variety:多様な形をしたBig Dataを整理する
 現在、主流のRDBは、正規化と呼ばれるデータの重複を無くすプロセスを経て、データテーブル間の関係性(リレーショナル)を厳格に定義したデータモデル設計することで、その豊富な機能を利用できるようになります。

 しかしながら、モバイルクラウドが生み出すBig Dataは、単純なログからプロフィール、文字だけではなく写真や動画も含むメッセージ、GPSやセンサーによる位置情報、ソーシャルグラフと言われる知人友人とのつながりやリンクなど、データの形が多種多様であり、その関係性も複雑です。また、質と量の変化が激しいため、データベースには高い柔軟性が求められます。

 つまりモバイルクラウドで形成されるBig Data に、RDBで素早く柔軟に対応するためには、かなり高度なスキルが求められます。そこで、複雑な関係性を定義するデータモデルでは無く、シンプルな形式のデータモデルがBig Dataには望ましいという考え方が生まれました。

 特に、「シンプルさ」のメリットは、データ間の複雑な関係性が無いため、多数のコンピュータにデータを分散して同時並行で処理することが容易になるという点にあります。これを実現するシンプルな形式のデータモデルは、データ識別のためのキーと、そのキーに紐づくバリュー(値)からなることから「キー・バリュー型」と呼ばれています。このシンプルなデータモデルを格納するのが「キー・バリュー型データベース」となります。

 他方、多種多様なデータを処理するための分散コンピューティングの代表的な技術は、2004年にGoogleが論文を発表したMap/Reduceでしょう。Big DataをMapという処理で複数のコンピュータに分散させ、Reduceという処理を経て、分散したデータをまとめ直すというソフトウェア技術です(図2)。

図2 Map/Reduceの概念図

図2 Map/Reduceの概念図

出典:平成21年度産学連携ソフトウェア工学実践事業報告書「高信頼クラウド実現用ソフトウェア開発(分散制御処理技術等に係るデータセンター高信頼化に向けた実証事業)」13ページ図1−2より


 これをもとにオープンソースとして開発されたHadoop Map/Reduceは、すでに最先端の技術者を擁する企業で利用され始めています。これらの分散コンピューティング技術により、汎用PC1台では何十時間もかかる処理を、複数の汎用PCに分散して実行させることが可能になり、大幅に効率化できるという事例が多く報告されています。

12次ページへ
page top