DBは習うより慣れよ!

2008年7月2日(水)
田中 宏昌

個人作業からチーム作業へ

 みんなで手分けするアプローチは、確かにスピーディーなのですが、これに伴う面倒もあります。

 最初に、電話帳を1枚ずつにバラして、それぞれの人に渡さなければなりません。処理の途中では困っている人がいないか、サボっている人は居ないかなどの管理も必要になるでしょう。最終的には結果を集計しなければいけません。

 集計してみてすべての結果がそろっていないことが判明した場合には、誰が報告していないのか確かめる必要があります。ということは、最初に仕事を分担する際、誰に何を分担したのか?ということも記録しておかなければなりません。頻繁に進ちょくをチェックすると、進ちょく報告のために仕事が中断されて、遅くなってしまうかもしれません。

 あるいは、(実際の電話帳はそんなことありませんが)広告が多い電話帳で、全体の3割が全面広告のページだったとしましょう。すると、100人に均等に仕事を割り振ったはずが、実際には3割の人は仕事をしないで、7割の人だけで頑張っていることになります。最初の段階で、できるだけ公平に仕事を割り振るべきだったと反省することになるでしょう。

 このように、パラレルクエリの恩恵を受けようとするならば、副産物であるこれらの面倒さと上手にお付き合いする必要があります。

 つまりこれは、仕事のやり方を「個人作業からチーム作業へ」とシフトすることにほかなりません。パラレルクエリの成功の鍵は、いかに上手にチーム作業をマネジメントするかということにかかっています。

並列処理と負荷分散の違い

 余談ですが、並列処理と似たようなテクノロジーに負荷分散があります。負荷分散はWebサーバーなどでよく用いられる方法です。どちらかと言えば「粒の小さい処理」を「大量にさばく」ことを目的としています。データベースでいえば「レプリケーション」のテクノロジーなどがそれにあたります。このアプローチは、多くのマシンで手分けして同時に処理することでパフォーマンスを高めるという意味では並列処理と同じなのですが、最初に仕事を分割したり、最後に集計したりという手間がほとんど無い点が異なります。

 すなわち同じ分散であっても、「負荷分散」であるか「並列処理」であるかは、チーム作業が求められるか否かという意味で大きく異なります(厳密に言えば、負荷分散でもある程度のチームプレイは必要ですが、話を単純にするために大ざっぱな議論をしています)。

 なお、実際のサービスでは、並列処理を負荷分散することも多くあります。両者を混同しないで理解しておくと良いでしょう。

株式会社メディカルアーキテクツ
株式会社メディカルアーキテクツ、共同経営者。NTTデータ、NTTデータ経営研究所(出向)にてITプロジェクトの企画や企業の戦略系コンサルティングを数多く経験。その後、外資系医療コンサルティング企業のCIOとして伝説のシステムを数多く作り上げ、2年前に起業。東京大学工学部航空宇宙工学科卒。http://www.mediarc.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています