編集部注: この記事はシリコンバレーでHapyrusを起業した藤川幸一(@fujibee)によるゲスト記事である。Hapyrusはクラウド上のビッグデータのためのウェブサービスを提供する会社で、500startupsや日本の有名な複数のエンジェルから投資を受けている。
昨年11月にAmazon Web Services(以下AWS)が初めてのユーザーカンファレンスre:InventでAmazon Redshift(以下Redshift)を発表して以来、ビッグデータ分野での破壊的プロダクトとしてメディアに紹介されて来ました。そしてついに、先日2月15日に一般公開されたRedshiftですが、エンタープライズ向け製品ということもあって、AWSの他のプロダクトよりも単価が高め(1時間あたり0.85ドルの利用料)です。このため触ってみたいけれども敷居が高いという方も多いのではないでしょうか。また、破壊的と言われていてもピンと来ない方が多いと思います。Hapyrusでは、長年AWS上のHadoopサービスであるAmazon Elastic MapReduceを簡単に利用できるようにするサービスを提供してきた経験と、米国でRedshiftの検証に公開前からAWSチームとともに携わってきた実績を踏まえて、Redshiftの特徴と用途について解説したいと思います。
Redshiftはデータウェアハウスの価格破壊
データウェアハウスとは、データ分析や管理のためのシステムですが、要するにデータの追加のみで、更新をほとんどしないビッグデータ向けのデータベースのことです。MySQLなどの通常のDBシステムとの違いはトランザクションをミリ秒単位で処理(OLTP)したり、頻繁に更新したりはできないですが、大量の過去データを保持し、データ集計などの計算(OLAP)を得意としています。企業の意思決定のためのBI(Business Intelligence)システムや、過去のデータを元にしたシステムの最適化などに利用されます。
この用途の違いのため、特殊なハードウェアなどで提供されることが多く、また大企業のデータ分析で利用されることが多かったため、数千万円から数億円以上という価格帯で、大変高価と考えられて来ました。
しかし、最近のHadoopを始めとする低コストなビッグデータ処理技術の発達から、大量データ分析の価値が見直され、広告テクノロジーやソーシャルゲームなどの、より小さな組織でもビッグデータを分析して新しいビジネスを生み出す事例も出始めています。
今まではビッグデータ分析とデータウェアハウスは、その価格差ゆえに別物と考えられることが多かったのですが、Redshiftはその価格差を壊し、スタートアップなどの小規模なビジネスでもビッグデータ分析を十分可能にしてしまったのです。ここが「破壊的」と称される所以です。今までも、Hadoopを利用すれば比較的低コストで同様な処理(例えば Hadoop Hiveを利用するなど)ができましたが、実はHadoopを実用化する場合、優秀なHadoopエンジニアの獲得や大規模なサーバ管理など、潜在的なコストが大きく、小規模ビジネスが簡単かつ十分にその恩恵を受けるのは難しかったのです。
具体的なポイント
では、Redshiftと既存のデータウェアハウス技術、Hadoopとの違いは何なのでしょうか。
- 価格
例えば、このようなキーワード(データウェアハウス 価格 億円)で検索してみて下さい。数テラバイト規模のデータウェアハウスでも、億円単位のプライスタグがついています。さらに、その管理のために複数のデータベース管理者を雇う必要があります(参考資料)。 これと同様なものをAmazonはテラバイト単価で最低年間1,000ドル(3年reserved instance/最低2TBから)で提供するというのです。さらに、データベース自体はAmazonがクラウド上で管理しますので、この価格に管理コストに含まれています。はっきり言うと、100万ドル対1,000ドルレンジの比較です。桁が3つも違います。実際に、このコストの差を埋める根拠を求めるのは非常に困難だと思います。これが、なぜあんなに騒がれていたかの理由です。
Hapyrusで、Hadoopで同等な処理(Hive上で同じSQLクエリー)でのベンチマークを集計して公開した(下図・日本語版はこちら)のですが、通常の実行コストを比較したものだけでも速度・コスト共に10倍以上もRedshiftが優っているという結果がでました。このベンチマークは一時SlideShareのHottest Slideにもなりました。それだけRedshiftはビッグデータ関連のエンジニアの関心が高いということです。HadoopやHiveは、基本的にその専門家を雇う必要がありますが、Redshiftは後述するように普通のWebエンジニアでも操作ができます。
- データウェアハウスとしての性能
ここから少し技術的な説明になりますが、最大の特徴はカラムナー(列指向)と呼ばれるデータ格納方式です。IBM NetezzaやHP Verticaなどの最新のデータウェアハウスで採用されている方式ですが、これはデータベースの各カラム(列)ごとに、データを保存する方法です。これに対して、通常のデータベースは行指向データベースと呼ばれます。行指向の場合、インデックスを利用して特定の行を瞬時に取り出すのは得意ですが、データの全件集計などはすべてのデータを処理する必要があるので不得手です。カラムナーの場合は、特定のカラムのみ計算すればよく、集計処理に向いています。
さらに、カラム内には特定のデータが繰り返し現れることが多いので、圧縮効率が非常に良くなります。Redshiftでは、7種類(2月28日現在・参考資料PDF)の圧縮アルゴリズムから各カラムごとにそれを選べます。さらに、投入するデータや現在格納されているデータから最適な圧縮方法を見つける方法も提供されています。
このように、クエリーに必要な、圧縮されたカラムだけをメモリ上に載せて計算を実行するので、対象がビッグデータであっても驚くようなスピードで結果を得られるのです。
Hadoopでもこのカラムナーのメリットを活かす追加モジュール(RCFile、HBaseなど)がいくつか公開されていますが、技術的な敷居もあり、標準的に使われているかというとそうでもないと考えています。
他のデータウェアハウスと比較しての最大の特徴は、Amazonらしくスケーラビリティーです。MPP(Massively Parallel Processing)と呼ばれる仕組みを備えていて、データ量が増えるに従って処理・保存サーバー数を増やし、処理速度を維持・向上することができます。Hapyrusではこの機能について、データ読み込みとクエリー速度の両方をベンチマークで確認しました。
実はRedshiftは元々、Amazonが出資しているParAccelという会社が提供するテクノロジーを元に開発されています。MPPはその会社や、他のベンダーからも提供されている機能ですが、これがAWSから提供されるということに意味があります。つまり、これがAmazon独自の最大の特徴なのですが、スケールアウト(台数を増やす)のが、ものの数クリックで完了するのです! これは他のベンダーがどんなに頑張っても真似できない、パブリッククラウドサービス独自の部分だと思います。
まとめると、カラムナーデータベースであり圧縮オプションが豊富、MPPによりスケーラブルでスケールアウトは数クリックで完了。初めてこれらの事実を知って、さらに検証が完了した時、身震いしたのを覚えています。
- 既存技術との互換性
RedshiftはPostgreSQLという既存のデータベースを元に構築されています。つまり、PostgreSQLのドライバーや、それに対応している各種ツールはほぼすべて利用できるということです。通常のJDBCドライバーですべての操作が可能です。つまり、一度データをRedshiftに入れてしまえば、既存のアプリケーションや新規に作ったウェブサービスなどからも、容易に利用できるということです。もちろん、PostgreSQLのすべての機能が使えるというわけではありませんが(例えばデータタイプがプリミティブに限定されるなど)、利用する敷居はHadoopに比べて格段に低いと考えられます。
- 現状の問題点
一番の懸念点は、まだ一般公開されたばかりで、実績があまり公表されていないことでしょう。しかし、そもそもこの技術は世界一のECサイトであるアマゾンで利用されて検証されているものですし、かなり前から非公開ながら、いろいろな企業で検証されてきたということです。公開当初は広く使われるようになるということでいくつか問題も出てくると思いますが、すぐに落ち着いてくるでしょう。
前述のベンチマークで、Redshiftへのデータの一括ロードにかなりの時間がかかるという結果がでましたが、インスタンスを複数にすることでかなり改善することがわかっていますし、またHapyrusでも一括ではない継続データアップロードの仕組みを提供しようとしています。
また、技術内容や利用方法についてもまだ広く知られていませんが、このような記事を通して、HapyrusとしてもRedshiftを利用する方々を応援して行きたいと思っています。
Hadoopとの住み分け
もちろん、Hadoopのほうが得意なことも多々あります。例えば、各レコード全体を処理していくものや、複雑な機械学習を利用した分析など、より高度な処理はHadoopでしか出来ないものもあります。また、頻繁に分析しない処理(例えば年に1回、月に1回のペタバイト級のバッチ処理など)は、Hadoopのほうがコストパフォーマンスが良くなる可能性があります。逆に、数分や数十分前のデータに対して短時間にリアルタイムに近い分析をしたい広告テクノロジーやデジタルマーケティング、ソーシャルゲームなどの分析には、テラバイト級のデータである限り、Hadoopや他のテクノロジーよりもRedshiftのほうが優位にあると考えられます。
Redshiftはビッグデータ分析のキラーアプリケーション
今まで、筆者はビッグデータ技術で一般利用が可能なものはHadoopしかなく、それをどれだけ使いやすくするか、ということがどのような規模の会社でもビッグデータの恩恵に与れる最短の道だと信じて進んできました。しかしまさに、それはRedshiftによってひっくり返されてしまいました。これはとても嬉しいことです。なぜならば、より簡単に、より低コストでビッグデータ分析の道がどんな規模の会社に対しても開けたということだからです。Redshiftを利用することで、皆がクラウドビッグデータを活用してよりよい世界が実現されることを願っています。