【Vol.18】宵勇樹氏「ビッグデータ活用に欠かせないスケールアウト」


colum_title

メンバーの皆さんそれぞれの経験・知見・想いをリレー形式でつなげていきます。
今回、バトンを受け取ったのは、Pivotalジャパンの宵勇樹さんです。

 

 初めまして、Pivotalジャパンの宵と申します。当社はベンダー会員としてJDMCに参加しております。このたび、事務局よりお声がかかり、リレーコラムを書かせていただくことになりました。若輩ですがよろしくお願いいたします。
 
 ビッグデータに関しては、これまでにもリレーコラムで何回か語られてきました。今回、私はビッグデータとスケールアウトについて述べたいと思います。
 
 スケールアウトとは、1台で対応しきれない処理に対し、複数のマシンに分けて並列で処理することを指します。例えば、1億件のログの処理ならば短時間で返ってきますが、それ以上だとメモリやCPUが足を引っ張り処理時間が極端に長くなってしまうマシン・アルゴリズムがあるとします。1000億件のレコードに対し同じ処理を行いたい場合、1台で処理時間が1000分の1になるようアルゴリズムを高速化するのと、1000台で1億件ずつレコードを処理する方法が考えられるでしょう。
 
 この場合、前者はスケールアップ、後者はスケールアウトと呼ばれることがあります。
1台の処理を1000分の1に最適化するのではなく、1000台のマシンで分散して処理をすることで処理時間を短縮化させるアプローチがスケールアウト方式です。
 
 データの格納から処理する部分でこの例の実装を挙げると、数台でスケールアップさせるのが従来のRDBMS、100台以上の規模でスケールアウトさせるのが「Hadoop」のエンジン、およびそのファイルシステム「HDFS」となります。
 
 ビッグデータの活用例としては、オンラインショッピングサイトにおける、より精度の高いリコメンデーション(推薦)機能が挙げられます。「あるユーザーが最近買った商品と過去に買った商品の情報を使って、似た傾向の品を買った別のユーザーに同じ商品を推薦した結果、売上げを伸ばせるようになった」といった成功例をよく語られています。
 
 この手のリコメンデーション機能は、商品の売上げが少なければ、従来型のRDBMSでも実現できるでしょう。しかし売上げが1000倍、10000倍と増えていった場合、データ量も1000倍、10000倍と増えていきます。また売上げがそれほど増えないとしても、ユーザーの特徴を詳細にとらえるために購買履歴に加えて、訪問したページの履歴などまで取得し始めたとすれば、データ量はそれに応じて爆発的に増えていくことになります。そうしてデータが1000倍、10000倍等と増えていったときこそ、スケールアップよりもスケールアウト型の拡張のほうが対応が容易になります。
 
 以上、データが増大したときにスケールアウトが有効なことについて述べました。スケールアウトは何にでも有効というわけではありませんが、スケールアウトしなければ立ちゆかなくなるくらいの増大を見せるのがビッグデータであるとも言えます。
 
 現在のところ、国内では固定容量のデータベースのシステムでもビッグデータ、もしくはビッグデータ時代のシステムと謳われることが少なくなく、違和感を感じずにいられません。ビッグデータのプロジェクトに取り組む際にはソフトウェア、ミドルウェアおよびハードウェアまでのすべての部分でスケールアウトを意識した製品設計、システム設計、及びアプリケーション開発が重要だと考えております。
 
 
yyoi宵 勇樹(よい ゆうき)

Pivotalジャパン株式会社 コンサルタント。国内総合電機メーカーのITエンジニア、ソーシャルゲームメーカーの大量分析基盤構築・運用エンジニアを経て2014年7月から現職。PyCon JP 2014 個人スポンサー。