Amazon Redshiftは、大規模なデータを高速かつ効率的に処理するためのデータウェアハウスサービスです。Amazon Redshiftを使用することで、膨大な量のデータを簡単に処理し、データ分析を行うことができます。本記事では、Amazon Redshiftとは何か、そのメリット、注意点、準備、データ分析やデータベース構築などの使い方、そして自社のビジネスを改善するためにAmazon Redshiftを使用する方法について解説します。

Amazon Redshiftとは?

Amazon Redshift(以下、Redshift)は、AWSの略称で知られるAmazon Web Servicesが提供するフルマネージド型のデータウェアハウスサービスです。データウェアハウスサービスとは、多様なシステムからデータを集積し分析のために保存しておく、データの倉庫(warehouse)のようなサービスのことです。一般的なシステムで利用されているRDBS(リレーショナルデータベースシステム)のように頻繁なデータの更新や追加をするよりも、収集した大量のデータをもとに分析を行うことに特化しています。

データウェアハウスサービスの中でもRedshiftはペタバイト単位のデータを高速に分析する能力を持っており、サービスの拡大に伴い扱うデータ量が増えても簡単にスケーリングすることが可能です。

Amazon Redshiftには下記のような特徴があります。

高速な分析性能を持つ

Redshiftは列指向データベースであり、大量のデータを高速に分析することが可能です。

列志向データベースとは、一般的なRDBSのように行単位ではなく列単位でデータの保存を行うデータベースのことです。列単位で保存を行うことにより、トラフィックを最小化し高い圧縮率を実現することが可能となります。これにより、通常のRDBSでは考えられない高速な処理を行うことができます。

高いスケーラビリティを持つ

前述したようにRedshiftは高いスケーラビリティを持ちます。スケーラビリティとは、システムが大量のデータや利用者の増加に対応できる能力のことです。Redshiftであればサービスの成長に伴ったスケーリングが簡単にできます。

強力なセキュリティ

データの暗号化、ネットワークの隔離、アクセス制御といった強力なセキュリティ機能を提供しています。これにより、顧客情報などの極秘データを安全に保持することができます。

フルマネージド型サービスである

Amazon Redshiftはフルマネージド型のサービスです。フルマネージド型サービスとは、マネージドサービスで提要している機能をベースにデフォルトで監視機能や障害対応機能が搭載されているサービスのことです。Redshiftではハードウェアの設定やソフトウェアのインストールなどの運用作業をAWSが行います。これにより、ユーザーはほかの作業に手間をかけることなくデータ分析に集中することができます。

では、Redshiftはほかのサービスとは何がどのように異なるのでしょうか。PostgreSQLやAmazon Auroraなどのそれぞれのサービスと比較します。

PostgreSQLとの違い

Redshiftは、PostgreSQLをベースに開発されたサービスであるためSQLが使えれば非エンジニアでも比較的手軽に操作できますが、用途としては大規模データ分析(OLAP)専用であるため、構造などは大きく違いがあります。PostgreSQLはオープンソースのRDBSであり、トランザクション処理(OLTP)に優れ、頻繁なデータの追加や更新がされることを想定された設計になっています。

一方、Redshiftは、DWHのような「データ分析用途」に特化して利用するデータベースであり、大量のデータを高速に分析することができます。また、PostgreSQLは単一のサーバで動作しますが、Redshiftはクラウドベースで、複数のノードを使用してデータを分散処理します。

Amazon Auroraとの違い

Amazon AuroraもAWSが提供するRDBSですが、クラウドのために再設計されたデータベースエンジンであり、主にオンライントランザクション処理(OLTP)向けに設計されています。構成やコスト、パフォーマンスが他のRDBSよりも特徴的であるため、一般的には「RDBS」ではなく「Aurora」と区別して呼ばれます。My SQLかPostgreSQLのいずれかと互換性のあるデータベースを作成します。

Amazon RDSとの違い

Amazon RDSは一般的なリレーショナルデータベース管理システム(RDBMS)を提供するサービスで、リレーショナルデータベースの構築や運用をサポートします。有名なRDBSである「Oracle Database」や「PostgreSQL」などが用意されているため、データベースをクラウドに簡単に移行できます。

Google BigQueryとの違い

Google BigQueryもRedshiftと同様にクラウドベースのデータウェアハウスサービスですが、両者の主な違いは、データ処理方法にあります。BigQueryはサーバーレスのアーキテクチャを採用していて、大量のデータをスキャンして迅速なクエリを実行するためにストレージとクエリの処理を分離しています。これにより、使用した計算リソースのみを課金することが可能です。一方、Redshiftは従来のRDBSと同様に、テーブルやスキーマを定義し予めクラスタを設定し、そのクラスタの容量に応じて課金されます。

Snowflakeとの違い

Snowflakeは、Snowflakeもクラウドネイティブのデータウェアハウスで、ストレージとクエリの処理を分離しています。両者の主な違いは、ストレージのアーキテクチャにあります。Redshiftは、従来のリレーショナルデータベースと同様に、ブロックベースのストレージを使用します。一方、Snowflakeは、仮想ストレージレイヤーを使用して、ストレージの管理を行います。また、Snowflakeは、クエリパフォーマンスの向上のために、ステージングと分散処理を使用します。

Microsoft Azure Synapse Analyticsとの違い

Microsoft Azure Synapse Analyticsは、ビッグデータとデータウェアハウスを統合した分析サービスです。一方、Redshiftはデータウェアハウスサービスで、大量のデータを高速に分析することが得意です。Synapse Analyticsはデータの探索とビジュアル化に優れていますが、Redshiftは大量のデータを高速に分析することに特化しています。

上記のサービスは、どれもクラウドネイティブでデータウェアハウスを構築するためのサービスであり、スケーラブルかつ高速なデータ処理が可能です。しかし、各サービスのアーキテクチャや細かい機能は異なるため、使用目的や要件に従ってどのサービスを利用するかを決めましょう。

Amazon Redshiftのユースケース

Amazon Redshiftは、大量のデータを高速かつ安価に処理するためのデータウェアハウスサービスであり、様々な業界で広く使われています。以下に具体的なユースケースを紹介します。

データの可視化と分析

RedshiftはBI(Business Intelligence)ツールとの互換性が高いため、TableauやLookerといったツールを使って直感的なダッシュボードの作成ができます。また、SQLクエリを使用した大量のデータのフィルタリング、集計、グループ化をすることができます。これにより、事業の現状の課題や改善点などを可視化し今後の方向性を定める助けとなります。

データのETL処理

ETL(Extract, Transform, Load = データの抽出、変換、ロード)は、データウェアハウスにデータを取り込むプロセスのことです。Redshiftは、ELTに必要な全ての機能を持っています。また、AWS Glueと組み合わせることで、自動化されたETLパイプラインを作成することが可能です。

データの効率的な管理

Redshiftは、大量のデータを効率的に管理する機能を提供しています。特に、列指向データベースとしての特性を生かし、データの圧縮やパーティショニングを行うことで、ストレージの使用量を削減し、クエリのパフォーマンスを向上させます。また、Amazon S3に保存されたデータにもアクセスすることができるため、データのクエリに必要な時間やコストを削減することができます。

機械学習

Redshiftは、ビッグデータを扱うための高速なSQLエンジンを備えています。このSQLエンジンは、データを変換し、機械学習アルゴリズムに適した形式に変換することができます。特に、Amazon SageMakerと連携することで、Redshift上のデータを使って機械学習モデルを訓練し、予測を行うことが可能です。

IoTデータの処理

IoTデバイスから生成される大量のデータを処理するのに、Redshiftは非常に有効なツールです。リアルタイムに生成されるデータを効率的に取り込み、分析することで、デバイスのパフォーマンスの最適化や異常検知などのインサイトを得ることができます。特に、Redshift SpectrumやAmazon Kinesis Data FirehoseなどのAWSのほかのサービスと組み合わせることで、ストリームデータの処理の効率化が図れます。

ログデータの処理とセキュリティ上のリスクの低減

システムやアプリケーションのログデータは非常に重要な情報源であり、これらのデータを分析することでシステムのパフォーマンスやセキュリティの課題の把握ができます。Redshiftは大量のログデータを高速に処理し、分析する能力が備わっています。また、AWSの強力なセキュリティ機能と組み合わせて、不正アクセスや攻撃の検知を行うことが可能です。

これらのユースケースは、Redshiftが提供するデータ分析の能力を最大限に活用するための一部の例です。個々のサービスのニーズに応じて、これらの機能を組み合わせて活用することで、ビジネスの成長を支える強力なデータ分析基盤を構築することが可能です。多くのサービスがRedshiftと連携することが可能ですが、中でもTROCCO®とRedshitを組み合わせることで多きなパフォーマンスを発揮できます。

RedshiftとTROCCO®を組み合わせることにより、データ分析基盤を一新し工数の大幅な削減に成功した事例としては、株式会社キュービックの事例をご参照ください。

レガシー化したデータ分析基盤<CBA>をリニューアルし、工数の半分を削減予定。急成長を続けるキュービックの「TROCCO®︎」活用とは

Amazon Redshiftのアーキテクチャとその特徴

Redshiftのアーキテクチャは、データ分析のために最適化された特別な設計を採用しています。ここでは、その主な構成要素と特性について詳しく見ていきましょう。

リーダーノードとコンピュートノード

Redshiftのアーキテクチャは、主にリーダーノードと呼ばれる制御ユニットと、複数のコンピュートノードと呼ばれるデータ処理ユニットで構成されます。リーダーノードはクエリ(データ操作の指示)を受け取り、そのクエリを最適化してからコンピュートノードに分散します。これらのコンピュートノードは、データの保存場所として機能し、それぞれがクエリの一部を同時に処理します。この一連の動きにより、大量のデータを迅速に分析することが可能になります。

コラム指向のストレージ

前述の通り、Redshiftは列指向のデータベースとして設計されています。この設計により、特定の列のみを効率的に読み取ることも可能です。実際にシステムが動いている際には、分析クエリが一部の列だけを対象とすることが多いため、結果として全体のパフォーマンスを大幅に向上させます。

データ圧縮と分散処理

データをより小さな容量に圧縮して保存することでストレージの効率を高めることができます。また、データは複数のコンピュートノードに分散されるため、大量のデータを一度に並行して処理することが可能です。これらの要素が組み合わさることで非常に高速なデータ分析が可能となります。

クラスターとレプリケーション

Redshiftはクラスターという形で提供されています。クラスターは、複数のノード(CPU、メモリ、ストレージを備えた独立したユニット)で構成され、各ノードが一部のデータを担当することでデータの分散処理が可能になります。

データの可用性

データの可用性と保全性を維持するために自動的にバックアップを作成しています。この作成されたバックアップはAWSの別リージョンにもコピーされるため、災害やシステム障害が起きてもデータの安全な復元が行えます。

パーティショニング

Redshiftでは、データを複数の部分(パーティション)に分割して保存します。分割して保存することにより、一部のデータに対するクエリだけを高速に実行することが可能となり、結果としてシステム全体のパフォーマンスが向上します。このようにパーティショニングが施された設計は、特定の期間や特定のカテゴリのデータだけを対象とするような分析をする際に特に有用です。

スケーラビリティ

サービスが成長するに従い保持するデータの量が増えてくると、データを処理するためのリソース不足に陥る場合があります。Redshiftでは、必要に応じてクラスターのサイズを拡大することにより、データ量が増えてもクエリのレスポンス時間を短縮し、柔軟に対応することができます。

上記のような優れたアーキテクチャにより、Redshiftは高速かつ柔軟なデータ処理を実現することができ、結果としてシステム全体のデータ分析能力の大幅な向上が図れます。

Amazon Redshiftを利用する5つのメリット

Redshiftを利用するメリットとしては、下記事項が挙げられます。

スケーラビリティがある

前述した通り、サービスの成長に伴いシステムが抱えているデータ量が増えても、その都度必要なリソースを追加してデータ処理能力を増やすことがRedshiftには可能です。つまり、初期段階で全てのリソースを揃える必要がなく、成長に合わせて柔軟にシステムの拡張できるということであるため、事業が成長するか予測が難しいサービス立ち上げ段階においてRedshiftを選択するのは非常にコストパフォーマンスが高い手段であると言えます。

パフォーマンスを向上させられる

これも前述の通り、Redshiftは大量のデータを高速に処理する能力がありますが、この能力はデータを列単位で処理する「列指向データベース」の特性と、複数のノードで同時にデータを処理する「分散処理」によるものです。このように膨大なデータを高速で処理が可能となれば、従来のように長い時間をかけずとも容易に迅速なデータ分析ができるようになります。

使いやすい

Redshiftはクエリ処理にSQLを使用するため、熟練のエンジニアでなくとも比較的容易にデータ分析ができます。また、AWSのマネジメントコンソールを通じて、クラスタの設定や監視が可能です。更に、多くのビジネスインテリジェンスツールがRedshiftをサポートしているため、データの可視化や分析も手間なく行えます。

堅牢なセキュリティインストラクチャ

こちらも前述したように、データの暗号化、ネットワークの隔離、アクセス制御といった強固なセキュリティ機能をRedshiftは提供しています。このような堅牢なセキュリティインストラクチャのおかげで、顧客情報などの絶対に漏洩してはいけないデータを安全に保管し、不正アクセスやデータ侵害から保護することが可能です。

コスト削減につながる

こちらも最初に説明した通りRedshiftはクラウドネイティブのサービスであるため、自社でサーバーやデータセンターを保有する必要がなく、初期投資や維持費などのコストを大幅に抑えることが可能です。また、Redshiftは大別して、利用した分だけを後払いするオンデマンド価格と、一定期間の利用を前払いするリザーブドインスタンスの二種類の価格プランを用意しています。適宜必要なプランを選択することによって、サービスの状況やニーズに応じた最適なコスト管理が行えます。

上記に加えて、Redshiftは自動バックアップやスケーリング機能を提供しているため運用コストも削減できます。たとえば、自動バックアップにより手動でのバックアップ作業が不要になり、人件費節約につながります。

これらのメリットを踏まえると、 Redshiftは膨大なデータ処理を必要とする企業にとって、非常に優秀なツールと言えます。

Amazon Redshiftを使う際の5つの注意点

一方で、Amazon Redshiftを使用する際には以下のような注意点もあります。

ランニングコストがかさむ場合がある

Redshiftはその高いスケーラビリティから大量のデータ処理が可能ですが、一方で、データ量やパフォーマンス要求が増えるほど、ランニングコストも増大する可能性があります。適切なクラスタサイズやノードタイプの選択、そして適切な使用時間を見極めることが重要です。長期的に一定の利用を見込む場合は、予約インスタンスの利用を検討することでコストを抑えることも可能です。

圧縮方式を適切に選択する必要がある

Redshiftはデータを圧縮することでストレージ使用量を削減し、クエリのパフォーマンスを向上させることが可能ですが、圧縮方式はデータの種類や使用パターンにより最適なものが変わるため注意が必要です。適切な選択をすることによりストレージ使用量を最小限に抑えつつパフォーマンス向上が可能となります。

最適なスキーマ設定をすることが重要

前述の通りRedshiftは列指向データベースであり、テーブルと列の設定次第でクエリのパフォーマンスが大きく変動します。適切なスキーマ設計とデータ分散戦略をすることでデータが適切に配置され、クエリの高速処理ができます。

適切なアクセス制御を行う必要がある

アクセス権限を適切に設定することで、不正アクセスやデータ漏洩を防ぐことが可能となります。特に、各ロールのユーザーがアクセスできるデータの範囲や、各ロールのユーザーが実行できる操作を細かく設定することでデータの保護レベルを高められます。また、監査ログを適切に設定することで不審な行動をすぐに検出できるようにすることも重要です。

メンテナンスと監視は重要

Redshiftはフルマネージド型のサービスであるため、基本的な管理作業はAmazon側が行います。しかし、システムのパフォーマンスを最大限引き出すためには適切なメンテナンスと監視が必要です。AWSのCloudWatchを利用してシステムのパフォーマンスを監視し、問題が発生した際には迅速に対処しましょう。また、パフォーマンス最適化や問題のトラブルシューティングを行うためには、Redshiftの内部構造や動作原理について理解を深めることも有益です。

以上のような留意点を抑えてRedshiftを活用すれば、膨大なデータを効率的に処理し、システムのパフォーマンスを向上させることが可能となります。

Amazon Redshiftの利用料金

料金は主に、利用したリソースと時間に基づいて決定される従量課金制です。具体的には、下記が料金計算の主要な要素です。

インスタンスのタイプと使用時間

Redshiftでは、データ処理を行うコンピューティングノードの利用時間が主な費用となります。異なるインスタンスタイプは異なるパフォーマンスと料金を持つため、適切な選択が重要です。

ストレージの使用量

データが格納されるストレージの使用量も課金の対象となります。特にRA3インスタンスでは、複数のノードで共有されるRedshift Managed Storageの使用量に対して課金されます。

サーバーレスオプションの使用

サーバーレスオプションを使用すると、実行した分析処理の時間に基づいて秒単位で課金されます。最低料金として60秒分の料金が発生します。

また、Redshiftでは長期利用を前提とした料金削減策も提供されています。たとえば、1年以上の利用を予定している場合は「リザーブドノード」を選択することで、大幅な割引が受けられます。「リザーブノード」は、1年または3年の一定期間継続利用の契約をすることで適用されます。

逆に、夜間や週末など特定の時間帯にシステムを停止する場合は、その時間帯の利用料金を節約するためにオンデマンド方式(従量課金制)を選択することをおすすめします。

上記のように、Redshiftの料金は使用したリソースと時間により変動するため、コスト管理をしっかり行うためにはシステムの利用パターンとニーズを理解し、適切なインスタンスタイプや利用方式を選択しましょう。

Amazon Redshiftを使うための準備

コンソールからログインしてクエリの動作確認をするまでは、下記の手順を取ります。

Amazon Redshiftコンソールにログイン

Amazon Web Servicesの公式サイトからアカウントにログインします。ダッシュボードから「Redshift」を選択します。

クラスターの作成

「クラスターの作成」ボタンをクリックします。ここで「クラスター識別子」、「データベース名」、「データベースポート」、「マスターユーザー名」、「マスターパスワード」を入力します。

ノードタイプとノード数の設定

ノードタイプ(DC2、 DS2、 RA3)とコンピュートノードの数を設定します。この選択で性能やコストに影響を与えるため、初めて利用する場合やテストが目的である場合は、小さなスペックから始めることをおすすめします。

IAMロールの設定

Redshiftクラスターから別のAWSサービスにアクセスする際にはIAMロールが必要になります。Amazon S3からRedshiftへのデータロードを行う場合などにIAMロールを設定します。S3へのアクセスが不要な場合は、「No additional S3 bucket」を選択します。

追加設定

必要に応じて、ネットワーク設定やバックアップ設定を「追加設定」からカスタマイズします。

クラスター作成の確定

全ての設定が完了したら、「クラスターを作成」をクリックします。クラスターの「状態」が「Available」になったら、Redshiftクラスターの準備は完了です。

Redshiftクラスターへの接続

Redshiftコンソールからクエリを実行するクエリエディタを使用します。作成したクラスターに対して、クラスター作成時に設定したユーザー名とパスワードで接続します。

クエリの実行

接続が確認できたら、SQLを実行して動作確認を行います。

TROCCO®とAmazon Redshift

弊社はデータ分析基盤構築サービスTROCCO®を提供しており、Redshiftのデータ統合(ETL)をサポートしています。

RedshiftとTROCCO®を連携させることによりエンジニア以外のビジネスパーソンも自動で、かつ簡単にデータの扱いが可能です。手動でのデータ転送の必要がなくなることで、より有効にデータを活用することができるでしょう。

たとえば、Googleサーチコンソールに表示されたデータをRedshiftに集計し、Lookerでリンクのクリック数やリンク別のインプレッション数ごとに円グラフにまとめて結果を直感的に理解しやすくなったり、kintoneに蓄積された受注データをRedshiftに転送しLookerで日別契約数などを表・グラフに起こし営業成績を可視化できたりします。TROCCO®との連携をすることで、こうした集計や可視化をする作業がより簡単に短い時間で行えます。

下記リンク先記事では事例としてTROCCO®を利用してGoogle広告のレポートデータをRedshiftに統合し、Lookerで可視化するまでの手順を紹介しております。興味をお持ちの方はぜひこの機会にご覧ください。

TROCCO®を利用してGoogle広告のレポートデータをAmazon Redshiftへ統合してLookerで可視化する

まとめ

Redshiftは上記のように非常に優れた機能を持ち、サービスのパフォーマンス向上に大変に役立ちます。しかし、適切な設定や運用が必要であり、そのためにはRedshiftの特性と機能を深く理解することが重要であり、深掘りするには学習コストがかかってしまいます。

TROCCO®とRedshiftを連携させればより簡単に直感的にデータ活用が可能となります。TROCCO®はフリープランであれば転送元/転送先コネクタ数が2種まで無料で利用できます。データの連携・整備・運用を効率的に進めていきたいとお考えの方や、プロダクトにご興味のある方はぜひ資料をご覧ください。

TROCCO® ライター

TROCCO®ブログの記事ライター データマネジメント関連、TROCCO®の活用記事などを広めていきます!