AWSのredshift(データウェアハウスサービス)についてまとめています。
AWSのRedshiftはデータウェアハウス S3上の生データと組み合わせデータレイクの構築が可能
AWSのRedshiftはデータウェアハウスサービス。Redshiftを使って、検索や分析用に加工したリレーショナルデータに加え、IoTデバイスのデータやウェブから収集したクリックストリームやログなど未加工の生データを組み合わせて保管する「データレイク」を構築することが可能です。保管されたデータに対しては、標準SQLでクエリを発行することができます。
参考)Amazon Redshift(高速、シンプル、費用対効果の高いデータウェアハウス)| AWS
データレイクの利点は、設計時点でどのデータをどのように保管するかを慎重に設計する必要がない点です。将来を予測してデータ構造を考える必要がありません。役に立ちそうなデータをとりあえず保管しておき、機械学習などの手法を利用してビッグデータから知見を得るために使うことができるんですね。
ただし、データレイクを使用可能な状態に保つにはカタログの作成とデータ保護の仕組みが不可欠。ただ生データを保管するだけだと、データを見つけることができなくなり「データスワンプ」(データの沼=使えないデータの塊)となってしまいます。
参考)データレイクとは
Amazon Redshiftは、Parquet、ORC、JSON、Avro、CSV などのオープンファイルフォーマットに対してクエリを実行することが可能。データをデータレイクにエクスポートするには、RedshiftのUNLOADコマンドでファイル形式としてParquetを指定します。すると、Redshiftで自動的にデータのフォーマットとデータのAmazon S3への移動が行われるんですね。
【関連記事】
▶AWS S3ってどんなサービス?初心者向けに機能紹介
結果として、構造化されたデータをRedhistデータウェアハウスに保存しながら、エクサバイト規模の構造化データ、半構造化データ、非構造化データ(生データ)をAmazon S3で維持することができます。
AWS Redshiftの使い方
具体的にAmazon Redhisftを使う手順は以下の通り。チュートリアルにサンプルデータが用意されているので、実際にデータウェアハウスをデプロイして試すことができます。
- Amazon Redshift クラスターを AWS マネジメントコンソールから作成する。
- インスタンスタイプを選択し、ノード数を指定してクラスターを設定する。
- AWS IAM を使ってクラスターを保護し、アクセスできるようセットアップする。
- スキーマを定義してテーブルを作成した後、Amazon S3 からサンプルデータをクラスターにロードする。
- SQL Workbench/J をセットアップし、Amazon Redshift JDBC ドライバーを使用して Amazon Redshift クラスター内のデータにアクセスする。
- SQL Workbench/J から標準 SQL を使用してデータを分析する。
また、Amazon Redshiftへの移行には、AWS Database Migration Service(AWS DMS)というサービスが用意されています。Oracleなどのメジャーなデータベースを、最小のダウンタイムでAmazon Redshiftに移行することが可能です。
【関連記事】
▶AWSのDMSは、低価格なデータベース移行サービス 継続レプリケーションも可能
ビッグデータに対して、機械学習モデルを組み合わせて、推論・予測をおこなうことが可能です。以下は、機械学習モデルの作成・トレーニングと、予測関数ml_fn_customer_churn_autoの定義です。
CREATE MODEL customer_churn_auto_model FROM (SELECT state, account_length, area_code, total_charge/account_length AS average_daily_spend, cust_serv_calls/account_length AS average_daily_cases, churn FROM customer_activity WHERE record_date < '2020-01-01' ) TARGET churn FUNCTION ml_fn_customer_churn_auto IAM_ROLE 'arn:aws:iam::XXXXXXXXXXXX:role/Redshift-ML'SETTINGS ( S3_BUCKET 'your-bucket' );
以下は、予測関数(ml_fn_customer_churn_auto)を使って、2020年1月1日以降にサインアップした顧客のうち、解約すると予測される顧客と電話番号を取得します。
SELECT phone, ml_fn_customer_churn_auto( state, account_length, area_code, total_charge/account_length , cust_serv_calls/account_length ) AS active FROM customer_activity WHERE record_date > '2020-01-01';
抽出したデータを使って、電話でフォローアップするなどの解約を回避するアクションを取っていくわけですね。
AWS Redshiftの料金
Amazon Redshiftの料金は、インスタンスモデル(スペック)、バックアップストレージの容量、Redshift Spectrum(Amazon S3データにクエリを発行する機能)のスキャンデータ容量、マネージドストレージの容量で決まります。
料金モデルはオンデマンドとリザーブド(予約)があり、リザーブドにすると先払いする代わりに割引が適用されます。
Amazon Redshiftの具体的な見積もりは、見積もりツールに値を入力することで入手可能です。
【関連記事】
▶AWSの見積もりは、AWS Pricing Calculatorで自動計算 ユースケースから流用も可能
例えば、Redshiftインスタンスに4 台の ra3.xlarge ノード、40 TB の Redshift マネージドストレージを 1 か月間使用し、Redshift Spectrum で 20 TB のデータをスキャンした場合のオンデマンド料金は以下の通りです。
- Redshift RA3 インスタンス = 4 インスタンス × 3.26 USD/時間 × 730 時間/月 = 9,519.20 USD
- Redshift マネージドストレージ = 40 TB x 1,024 GB/TB x 0.024 USD = $983.04 USD
- Redshift Spectrum = 20 TB x 5.00 USD = 100.00 USD
- 月額コスト: 10,602.24 USD
AWS Redshiftのまとめ
- AWS Redshiftは、データウェアハウスサービス
- 構造化されたデータウェアハウスのデータと、非構造化のS3上の生データをSQLクエリで検索できる
- 保管したデータに対して、SQLで機械学習モデルを生成・トレーニングし、予測関数の定義が可能