本特集「ビッグデータとは何か」では、今回と次回で大量かつ非定型(かつ、場合によってはリアルタイム)という特性を有する「ビッグデータ」を適切に処理するためのテクノロジの動向について見ていこう。
「ビッグデータ」テクノロジの大原則
まず、「ビッグデータ」を扱う際に用いられるテクノロジの一般的原則を見ていこう。
最も重要な原則は分散処理だ。データを多数の機器(サーバやストレージ)に(重複を許しながら)配置し、処理することで、高いスケーラビリティと耐障害性を実現するという考え方だ。データ量が増えた場合には、機器のアップグレードではなく追加により対応できなければならない。いわゆるスケールアウト(水平スケーラビリティ)が実現されていなければならない。
なお、機器のアップグレードにより性能を向上するスケールアップ(垂直スケーラビリティ)の考え方も、従来型のOLTP(オンライントランザクション処理)の世界においては依然として有効だ。しかし、「ビッグデータ」の世界では、スケールアップでは十分なスケーラビリティとコスト効率性を実現できないため、スケールアウトが必然的な選択肢となる。
ここで言葉の問題になるが、「分散処理」とはあくまでもサーバやストレージ間での処理やデータ保管の分散を指すのであって、地理的な分散を指すとは限らない。もちろん、災害対策等の観点でデータの地理的な分散が必要となることもあるが、性能へのインパクトを考えれば地理的な分散は最小限に留めるべきだ。
たとえば、クラウド上の多数のサーバで「ビッグデータ」を分析できるソリューションにより、通常は1時間かかる分析を1分間で完了できるとしよう。素晴らしいソリューションのように見えるかもしれないが、この分析のためのデータを企業内システムからクラウドに転送するために2時間を要するのであればまったく意味がない。一般に、「ビッグデータ」系のシステムを設計する際には、ネットワークを介した大量データ転送をどれほど最小化できるかがキーになる。つまり、不要な地理的分散は避けなければならない。
言葉の話に戻るが、「分散処理すなわち地理的分散」という誤解を避けるためには、「並列処理」という言い方をした方が適切かもしれない。
では、この原則論を念頭に置き、インフラの下位層から順に「ビッグデータ」に必要とされるテクノロジについて見ていこう。まずは、ストレージ階層からだ。