企業で使われるHadoop 3

「データのライフ・サイクル」で考えるHadoopの使いどころ

前回は、Hadoopがどのような仕組みでスケール・アウト性を実現しているのかを述べました。また、Hadoopが基本的に、バッチ処理のスループットの向上を目的にしていることを指摘しました。Hadoopには、「できること」と「できないこと」があります。処理の性質によっては、既存のリレーショナル・データベ

清田 陽司

2010年6月18日 20:00

前回は、Hadoopがどのような仕組みでスケール・アウト性を実現しているのかを述べました。また、Hadoopが基本的に、バッチ処理のスループットの向上を目的にしていることを指摘しました。

Hadoopには、「できること」と「できないこと」があります。処理の性質によっては、既存のリレーショナル・データベース管理システム(RDBMS)や、最近注目されているKey-Value Store(KVS)型データベースなどが適していることもあります。

今回は、RDBMSが果たしている役割とニーズの変化を踏まえながら、「データのライフ・サイクル」に着目して、RDBMS、Hadoop、KVSの3者をどのように使い分けていくべきかを解説します。

RDBMSが果たしている役割

RDBMSは、米IBMの研究所に勤務していたエドガー・F・コッドが1970年に発表した、「関係モデル」というデータ・モデルを採用したデータベース・システムです。関係モデルは、「あらゆるデータを表形式で表現する」という前提に立ったモデルで、多くの種類のデータを扱うことができます。

RDBMSは、その40年近い歴史の中で、ビジネスに活用するために必要とされる機能が次々と実装されてきました。まさに、現代の情報システムのインフラとしての役割を果たしています。以下では、インフラとして、どのような機能を備えているのかを整理してみましょう。

トランザクション処理

データベースを更新する際に、矛盾なく処理を行うための機能です。銀行口座間の資金移動を例にとって考えてみましょう。

Aさんの銀行口座に今100万円の残高があるとします。Aさんの口座から50万円をB社の口座に振替入金する場合、以下の3つの処理が連続して行われます。

  • (1)Aさんの口座残高が50万円以上あるかをチェックする処理
  • (2)Aさんの口座残高から50万円を差し引く処理
  • (3)B社の口座残高に50万円を足す処理

もし(3)の処理にエラーが発生した場合、(2)の処理とあわせて取り消し処理を行わないと、50万円がどこかに消えてしまいます。また、(1)の処理の直後にAさんがATM(現金自動預け払い機)から60万円を引き出したとすると、口座残高が40万円しかないにもかかわらず、50万円の引き落とし処理が実行されてしまいます。

トランザクション処理は、このようなデータの矛盾を防止します。

インデックス

データベース中にある特定のデータを、高速に検索するための機能です。

数百万件ものレコードが登録されているテーブルから1件のレコードを検索する場合、1件づつ照合していては非常に時間がかかってしまいます。インデックスをあらかじめ作成しておくことによって、一瞬で必要なレコードを検索することができます。

インデックスは、「ハッシュ法」「Bツリー法」などの賢いアルゴリズムを使って、高速な検索を実現しています。

ブラック・ボックス化

第1回で述べたように、インフラには「複雑な仕組みをブラック・ボックス化して簡単に利用できるようにする」という性質があります。

トランザクション処理やインデックスの機能を実現するための仕組みは非常に複雑ですが、RDBMSではこれらの機能をブラック・ボックス化しており、SQL言語のみで利用できるようになっています。

RDBMSの利用者は、SQL言語の使い方をマスターするだけで、これらの機能の恩恵を受けることができます。

RDBMSの発展の歴史は、コンピュータ・システムがビジネスの現場に普及していく上で必要とされる機能を次々と実現していった歴史といってもよいでしょう。現在のコンピュータ・システム開発は、RDBMSを抜きにして考えることはできなくなっています。

 

RDBMSをコンピュータ・システムの基幹部品として採用するということは、RDBMSの長所だけでなく短所も同時に受け入れることになります。例えば、多くの機能を実現すると、ある程度性能が低下します。しかし、さまざまな機能が1つのシステムとしてブラック・ボックス化されているため、必要ではない機能を切り離すことが難しくなっています。

Hadoopという新たなインフラの活用を検討する際には、RDBMSが果たしてきた役割がどのような変化にさらされているのかを把握することが、大きなヒントになります。以下では、データベースに起こっている変化を、「定型処理と非定型処理」、「リアルタイム処理とバッチ処理」という2つの観点からみていきましょう。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る