連載
» 2017年01月16日 05時00分 公開

きょうから試せる Hadoop“スモールスタート”ガイド(1):Hadoopとリレーショナルデータベースは「何」が違うのか (2/4)

[佐々木達也,著]

バッチ処理

 さて、次はバッチ処理について考えてみます。

 小さなデータサイズのバッチ処理であれば扱いも手軽ですし、リレーショナルデータベースで特に困ることもなく十分だと思います。ただし、扱うデータサイズが大きくなってくると、だんだんとリレーショナルデータベースでは処理を行うのが難しくなってきます。

 こういったバッチ処理では、データをまとめて取り出したり、大量のデータをまとめて処理したりするといったことを高速に行うことが求められます。こういった要求に対しては、以下のようなことが条件として必要でしょう。

  • 大量のデータを高速に読み出せる
  • 処理性能がスケールする

大量のデータを高速に読み出せる

 まず、データサイズが大きくなった場合、バッチ処理を行うにしてもそもそもデータの読み込みに時間がかかるという問題があります。データの読み込みは思った以上に膨大な時間がかかってしまうものなのです。

 データの読み込みは時間がかかりますが、スケールアップもしくはスケールアウトすることで高速化できます。リレーショナルデータベースであればスケールアップすることで高速化することは可能ですが、コストがかかります。一方、Hadoopであればスケールアウトすることでコストも抑えつつ高速化することができます。今後もデータが増え続けていくであろうことを考えれば、Hadoopを使ってスケールアウトすることでどんどん読み込み性能を上げていける方が現実的な案でしょう。

処理性能がスケールする

 バッチ処理であればデータサイズがどんどん大きくなることは当然考えておいたほうが良いでしょう。最初はデータが少なくてすぐに終わっていたような処理でも、気がついたら何時間も、ひどいときには1日以上かかるような処理になってしまうことも珍しくありません。データサイズが大きくなっても困らないように、処理性能がスケールできる設計になっている必要があります。

 この場合、Hadoopはそもそも台数を増やせばスケールする前提で作られているため、特に問題はないでしょう。一方、リレーショナルデータベースも台数を増やせば処理性能はスケールするのですが、それはあくまでも細かな処理を同時に複数さばけるようになる、という意味でのスケールです。巨大なデータの処理を行おうとすると、それらを細かなタスクに分解する仕組みがないため、処理は結局のところ特定のサーバに集中してしまいます。つまり、特定のサーバの性能に依存してしまうため、スケールできているとは言えません(図2-7)(図2-8)。

図2-7 リレーショナルデータベースの処理性能はスケールしない
図2-8 リレーショナルデータベースの処理性能はスケールしない 図2-8 リレーショナルデータベースの処理性能はスケールしない

 このように、特定のデータをピンポイントで読み出すようなランダムアクセスにはリレーショナルデータベースが向いており、バッチ処理のような大規模データ解析ではシーケンシャルアクセスに向いているHadoopが力を発揮します。それぞれの特徴をまとめるとこのようになるでしょうか(表2-1)。

表2-1 リレーショナルデータベースとHadoop
リレーショナルデータベース Hadoop
スケール方法 スケールアップ スケールアウト
データアクセス ランダムアクセス シーケンシャルアクセス
得意な処理 リアルタイム処理 バッチ処理

 次ページではそんなHadoopの特徴を詳しく見ていきます。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

8月8日10時30分〜16時30分の間、システムメンテナンスのため記事の一部表示や資料のダウンロードができなくなります。ご理解のほどよろしくお願いいたします。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。