米Amazon Web Services(AWS)が2017年4月に一般提供を開始した、ビッグデータ分析の新しいクラウドサービス「Amazon Redshift Spectrum」。安価に利用でき、データ容量の上限を無くせる、運用が容易になるといった特徴を持つ。これらの特徴を実現する仕組みを解説する。

 Redshift Spectrumの仕組みと主な処理の流れは下図の通りだ。Redshift Spectrumは、外部テーブルを使ってオブジェクトストレージサービス「Amazon S3」に保存されたデータに対してクエリーを実行する。外部テーブルは、外部スキーマと呼ぶデータ領域に作成する。比較的安価でデータ容量の上限がないS3を使うことで、安さ、無制限のデータ容量に加え、Redshiftのストレージにデータを取り込まずに済むという運用の容易さを実現する。

Redshift Spectrumの仕組みと主な処理の流れ
Redshift Spectrumの仕組みと主な処理の流れ
[画像のクリックで拡大表示]

 利用するには事前に外部スキーマを作成する。標準ではRedshift Spectrumと同じく、S3上に保存されたデータに直接クエリーを実行できるサービス「Amazon Athena」のデータカタログを利用する。Athenaのデータカタログは、テーブル、データベース、パーティションに関する情報を保存するためのものだ。外部スキーマの作成後は、データカタログにテーブルの定義情報を登録する。

 Athenaのデータカタログを使わない場合は、オープンソースソフトウエア(OSS)の分散データ処理ソフトウエア「Hadoop」のSQLクエリーの仕組みである「Hive」で、テーブルなどの情報を管理するメタストアを利用する方法もある。

必要に応じて数千台まで増加

 これで事前準備は完了だ。後はRedshiftの通常操作と同じく、SQLクエリーを実行する。米AWSでRedshiftのシニア・ソフトウエア・デベロップメント・マネジャーを務めるミカリス・ピタポリス氏は、「表現できるSQL文に制限はない」と話す。外部テーブルとRedshift内にある実テーブルとのテーブル結合も可能だ。

 SQLクエリーを実行すると、RedshiftのLeader Nodeが「最短の実行時間を目指し、最適なクエリーの割り振りを実施する」(ピタポリス氏)。Leader Nodeが最適化したクエリーの処理プランをCompute Nodeに送ると、各Compute Nodeは外部テーブル部分の処理を「Spectrum Layer」と呼ぶ、ユーザーからは見えない計算処理領域に要求する。