2020/12/29

「Amazon Redshift」とは?「Amazon Redshift Spectrum」の利用方法を紹介!

 
  

「Amazon Redshift」とは

「Amazon Redshift」とは、AWS上で利用できるマネージド型の「データウェアハウス(DWH)」サービスです。

なお「データウェアハウス」とは、企業活動を通じて蓄積したデータを分析しやすく整理したデータベースの一種です。ビジネス上での意思決定時の判断材料として利用することが想定されています。

「Amazon Redshift」の特徴

「Amazon Redshift」の特徴は、リソースの制限がないクラウドの特性を活かし、スケールアウトしながらペタバイト級の大規模データを扱える点です。

加えて大規模でありながらも高速なデータ分析処理が可能となっています。

「Amazon Redshift」を選択するケース

データ分析サービスとして「Amazon Redshift」を選択するケースについて解説します。

AWS上のデータ分析サービスとしては、「Amazon EMR」や「Amazon Athena」等があります。

「Amazon Redshift」をこれらのデータ分析サービスと比較すると、SQLでデータ分析したいという要件があり、「データレイク」との連携を要求される場合は、「Amazon Redshift」を選択するケースが一般的です。

AWSにおける「データレイク」とは

上述したAWSにおける「データレイク」とは、「Amazon S3」のストレージ利用方法の一つで、様々な形式のデータを一元管理するためのリポジトリ(データの貯蔵庫)です。

一般的なリポジトリとは異なり、「構造化データ」と「非構造化データ」の両方の形式をそのまま保存することが可能です。

「Amazon Redshift」が登場した理由

「Amazon Redshift」が登場した背景について解説していきます。

「Amazon Redshift」は、AWSにおけるデータウェアハウス(DWH)サービスですが、一般的なDWHとの違いについて明確にしていきます。

従来のデータウェアハウスの課題

従来のデータウェアハウス(DWH)の課題として、用途に応じてデータを加工し、保存しておく必要があります。

つまりDWHは、データを加工する「処理」の機能と、データを保存していく「蓄積」の機能の両方が含まれており、これらの機能が密接に結合しており片方だけを変更することが困難です。

例えば、新しい分析用の「処理」を導入しようとしても、「蓄積」してある加工済データをそのままでは利用することができません。

AWSの「データレイク」による解決

前述の課題解決方法として、AWSでは「データレイク」というデータ保存方法を最初にサービス提供しました。

このデータレイクにより、データを加工しない状態のままで保存することが可能になりました。また「Amazon S3」がストレージとして用いられているので、データの大規模化にも問題なく対応可能となっています。

新しい分析処理方法を導入する際に、その処理に合わせてデータを加工すればよくなり、ビジネスの展開に合わせてスピーディーに分析手法を変更することが可能です。

AWSの「Amazon Redshift」による解決

AWSの「データレイク」サービスの提供によって、データの「蓄積」の課題は解決しました。

しかし、「処理」と「蓄積」の機能を分離したことで、通常のデータウェアハウスでは対応できなくなりました。一般的なデータウェアハウスでは、「処理」と「蓄積」の機能を密接に連携することで、高速なデータ分析処理を可能としているからです。

そこで、分離した「処理」機能側を担うサービスとして、「Amazon Redshift」が登場しました。

「Amazon Redshift Spectrum」について

「Amazon Redshift」の登場によって、データウェアハウスサービスをAWS上で便利に利用できるようになりました。しかし、分析対象データの多様化と大規模化が進むにつれて、新たな問題が浮上してきました。

こちらの問題と、その解決方法として登場した「Amazon Redshift Spectrum」について解説していきます。

「Amazon Redshift」での課題

データウェアハウスによる分析対象のデータが大規模化・多様化にするに伴い、「Amazon S3」からデータをコピーするのに時間が掛かるという「Amazon Redshift」ならではの課題が発生しました。

この原因としては、「Amazon S3」内の分析対象データ自体をスケールアウトしづらいためです。「Amazon Redshift」側でデータコピー用インスタンス(ノード)を増やせますが、その分だけ大幅なコスト増が問題になります。

「Amazon Redshift Spectrum」とは

「Amazon Redshift Spectrum」とは、「Spectrum層」と呼ばれる処理層を設けることで、AWSのストレージサービスである「Amazon S3」側のスケールアウトを代理で行うサービスです。

上述した「Amazon Redshift」での課題を解決するためのサービスとして登場しました。

「Amazon Redshift Spectrum」の特徴

「Amazon Redshift Spectrum」の特徴は、「Amazon Redshift」と「Amazon S3」の間を連携する点です。

具体的には、「Amazon Redshift」側でのスケールアウトが不要になるため、データ大規模化に比例したコストを抑制することが可能です。

「Amazon Redshift Spectrum」のデータ定義

「Amazon Redshift Spectrum」のデータ定義方法としては、「Amazon S3」上のデータについて、データベースの「テーブル」の形式で事前に定義しておく必要があります。

これにより「Amazon S3」からのデータ読込み処理が不要となり、「Amazon S3」をデータベースのようにSQLで直接操作することが可能となります。

「Amazon Redshift Spectrum」の利用方法

「Amazon Redshift Spectrum」の利用方法について解説します。

「Amazon Redshift」自体も、AWSにおけるいわゆる「フルマネージドサービス(インフラに関する管理が不要)」のため、簡単な操作だけで利用することができます。

「Amazon S3」に分析対象のデータを配置する

最初に、「Amazon S3」のバケットに、分析対象のデータを配置します。

サポートしているフォーマット形式としては、テキスト形式 (CSV等)、PARQUETやRCFILE等があります。なお高速なアクセスを実現するためには、データをパーティショニングして保存することが推奨されています。

また「Amazon S3」にアクセスするための「IAMロール」を用意しておきます。

「Amazon Redshift Spectrum」用の外部スキーマを作成する

「CREATE EXTERNAL SCHEMA」というステートメントを使用して、「Amazon Redshift Spectrum」用の「外部スキーマ」を作成します。

なおここでの「スキーマ」とは、AWS上では「データベース」と同じ意味で使用されています。

「Amazon Redshift Spectrum」用の外部テーブルを作成する

外部スキーマと同様に、「CREATE EXTERNAL TABLE」ステートメントで「外部テーブル」を作成します。

つまり、「Amazon S3」に配置された分析対象データを「外部テーブル」として定義します。

クエリ(問い合わせ言語)を実行する

これまでの手順で、「Amazon S3」上のデータがデータベースのテーブルのように扱えるようになりました。

それでは、SELECT文等の通常のSQLを実行して、「Amazon S3」上のデータを参照してみます。

「Amazon Redshift Spectrum」を活用するためのポイント

最後に、「Amazon Redshift Spectrum」を活用するためのポイントについて解説します。

AWSの公式サイトで「ベストプラクティス」が提示されていますので、そちらも合わせてご紹介します。

「Amazon S3」上のデータの直接操作

「Amazon Redshift」のクエリをそのまま使用して、「Amazon S3」上のデータを直接操作することが可能な点がメリットです。

またローディング(データの読込み処理)に掛かる時間的なコストが不要になります。そのため分析処理が高速化しやすくなります。

複数の「Amazon Redshift」クラスターによる「Amazon S3」のデータ共有

複数の「Amazon Redshift」クラスターによる「Amazon S3」のデータ共有が可能です。

「Amazon S3」に対する負荷が分散されるので、システム全体での並列処理性能が向上します。また「Amazon Redshift」クラスターを異なるアベイラビリティゾーンに配置することで、「可用性」を向上させることも可能です。

「Amazon Redshift Spectrum」のベストプラクティス

「Amazon Redshift Spectrum」のベストプラクティスとしては、テーブルをパーティショニングすることでデータ検索時間を短縮する方法や、「Spectrum層」への処理の移動等があります。

AWS社の公式サイトを参考に、これらのベストプラクティスを活用していきましょう。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】