Redshiftとは

Amazon Redshiftは、AWSを通じて提供されるフルマネージドでペタバイト規模のクラウド専用データウェアハウスです。他の分析データウェアハウスと同様に、Redshiftは列指向のストアで、膨大なデータセットに対するより大規模な分析クエリに特に適しています。

また、Redshiftは大規模なデータセットへのインタラクティブなクエリにも高速で対応可能です。AWSコンソール、コマンドライン、またはAPIからクラスタを拡張・縮小するのも簡単で、1つから最大128までのノードでクラスタをサポートすることができます。Redshift Spectrumで実行されるクエリには、コンピューティングのリソースが動的に割り当てられるため、事前の計画が不要なだけでなく、最大数の制限もありません。

Redshiftはセットアップやメンテナンスの簡単さ、充実したカスタマイズのオプションがバランスよく備わっているため、非常に人気の高いデータウェアハウスです。つまり、Redshiftは強力なクラウド データベース ソリューションということです。企業はそれぞれ独自のワークロードについてRedshiftのクラスタを監視して最適化するための知識を蓄えつつあるため、さらに大きなスループットを実現することができます。

Redshiftを選ぶ理由

バランスの良さ

Redshiftは、オンプレミスのMPPデータベースの充実したカスタマイズとクラウドMPPデータベースのシンプルさという2つの要素をバランスよく兼ね備えています。データに強い企業にとって、Amazon Redshiftはコスト、柔軟性、使いやすさ、パフォーマンスの点でまさに申し分のない製品です。

スケーラブル

Redshiftはクラウド内のフルマネージド製品で、ブラウザのみを使ってRedshiftインスタンスをごく簡単に拡張または縮小することができます。また、RedshiftのSpectrum機能はS3に直接格納されたデータにインタラクティブなクエリアクセスを提供するため、Redshiftにインポートする必要がありません。動的に拡張するコンピューティングエンジンを用いるため、リソースが数秒で使用可能な状態になり、スケーラビリティの制限は実質的にありません。

カスタマイズ可能なパフォーマンス

Amazonは、使用事例に合わせてRedshiftのクラスタを最適化する実用的なオプションを用意しています。これには、さまざまなノードタイプ、多くの圧縮タイプデータテーブルにパーティションを作成する複数の方法などがあり、これらのカスタマイズ方法を有効活用することで、クラスタのパフォーマンスを格段に高速化することが可能です。

Amazon Redshiftが実際に役立つ事例

増え続ける膨大なデータを抱える企業

トランザクショナルデータベースにクエリを実行するのに慣れている企業の場合、Redshiftがいとも簡単に処理できるデータの量に驚かれることでしょう。数百万、さらには数十億という行にクエリを実行して、結果が返ってくるまでの時間は数分や数時間ではなく、ミリ秒単位です。

既存のエンタープライズ データウェアハウスから移行する企業の場合は、RedshiftはDevOpsの問題なしに同じ優れたパフォーマンスを発揮し、コストはたいてい数分の一で済みます。また、クラウドアーキテクチャを採用しているため、データ量の増加に合わせてスケールアップする際も手間がかかりません。

Spectrum機能の追加によって、Redshiftはさらにパワフルになり、S3データレイクから直接データにアクセスすることができます。S3のストレージは低コストで実質的に制限がないため、最も頻繁にクエリを実行するデータをテーブルに格納し、あまりクエリを実行しないデータは常にSpectrumを介して利用可能にすることで、マルチレイヤーのデータウェアハウスソリューションを構築することが可能です。

使い慣れたデータウェアハウスシステムとSQL言語を求める企業に最適

Amazon RedshiftはオンプレミスのEDWシステム(ストレージとコンピューティングリソースを含むノードのクラスタ、リードのノードはクエリの計画用)の多くに馴染みのあるアーキテクチャを使用していますが、クラウド用に最適化されています。こうすることで、データエンジニアがアーキテクチャに慣れているため、オンプレミス環境からの移行が楽になります。RedshiftのSQL言語は、世界中のアナリストから幅広く支持されているPostgreSQLに基づいています。

サービスとパートナーの大規模なエコシステムを活用したい企業に

Redshiftは、AWSエコシステム内の増え続ける膨大なソリューションのラインナップに属しています。そこから、未加工の開発者向けツールからフルマネージドのサービスまで、あらゆる種類の使用事例に適したツールを入手できます。Amazon RedshiftはAmazonが提供する唯一のクラウドデータソリューションで、より大規模なAWSのエコシステム内で他のソリューションと完全に統合することができます。

Redshiftは特に、Redshiftと協業するための認定を取得したネットワーク内の各企業と、非常に素晴らしいパートナーネットワークを築いています。Redshiftのパートナーネットワークの各社は、データ統合からビジネスインテリジェンスにいたるまで、万事においてユーザーを支援します。これにより、Redshiftはその製品について卓越したサポートと統合を提供することができるのです。

半構造化ファイルを扱う企業

Redshift Spectrumを利用すれば、企業はデータを移動することなく、Amazon S3にあるエクサバイト規模の構造化データに対してクエリを返すことができます。Redshift Spectrumはそのクエリプランニングのリソースを使用して、単純なファイルアクセス程度のクエリを最適化し、CSVやTSV、Parquet、Sequence、RCFileといった複数のファイル形式に対応します。

予測可能な料金体系を望む企業

RedshiftはAWSからクラウドリソースを借りるのと変わらないため、コストがどれくらいになるか簡単に見当がつきます。また、毎月数百ドルから数千ドルまで、コスト上の制約に基づいてクラスタで最大限のパフォーマンスを引き出すことができます。

ワークロードの管理を必要とする企業

Redshiftには非常に優れたワークロード管理の設定オプションがあります。これを利用すれば、最初に返すクエリを適切に優先順位付けすると同時に、緊急のクエリが時間のかかるプロセスが終わるまで待機しなくても済むよう徹底することができます。

利用を決定する前に

料金

AWSは、オンデマンドと予約済みの両方の料金体系を提供しています。概念実証のためには、最適なパフォーマンスを実現するために異なるクラスタ構成を試せるオンデマンド料金がふさわしいと言えます。一方、理想のデータウェアハウス技術としてAmazon Redshiftを選択している場合には、予約済み料金を選ぶ方が費用効果がずっと高くなります。

Redshiftに支払う料金は、ハードウェアの構成に合わせて固定されます。S3でデータに直接クエリを実行するSpectrumは、従量制の料金モデルとなっています。Redshiftの場合は特に、クラスタを適切な規模にすることが重要です。こうすれば、必要なパフォーマンスを実現しながら、使用することのない処理能力に対しては料金を支払う必要がありません。

無料トライアル

RedshiftにはDC1.Largeノードで月750時間、2​​​​​​​ヵ月間で合計1500時間までの無料トライアルがあります。当社では一般的に、いくつかのノードで無料トライアルを実行し、本稼働環境でパフォーマンスの実情を把握するようお勧めします。LookerとRedshiftがどのように連携するのか知りたいという方のために、Lookerでは定期的に無料トライアルのコードを配布しています。このコードがあれば、750時間を延長して徹底した概念実証を行うことができます。詳しくは、こちらからLookerまでお問い合わせください。

Redshiftデータベースのアーキテクチャ

Redshiftは、シェアード・ナッシング・アーキテクチャで設計された分散型のMPPクラウドデータベースです。つまり、ノードにコンピューティング(CPUとメモリ)とストレージ(ディスク容量)の両方が含まれます。Redshiftは、リーダーノードとコンピューティング用ノードの2種類のノードで構成されます。

Redshiftのリーダーノードは、クライアントアプリケーションからクエリを受け取り、関連データが保存されたコンピューティングノードにこれらのクエリを分散させます。注意すべき点は、クエリプランをひとつにまとめて外部へ送るのはリーダーノードでありながら、Redshift上での実際の作業は主にコンピューティングノードで行われることです。

Redshiftのコンピューティングノードは、テーブルデータの一部を保存して、リーダーノードから受け取ったコードを実行します。さらに、その結果を戻してリーダーノードで集約します。

コンピューティングノードは2つのクラスから選ぶことができ、各クラスタはどちらか一種類のノードで構成する必要があります。2つのタイプは以下の通りです。

  • デンスコンピューティング(SSD): 小さい方のデンスコンピューティングのオプション(DC1.Large)で、ノードあたり0.16TBのストレージが付いています。大きい方のデンスコンピューティングのオプション(DC1.8x.Large)のストレージは、ノードあたり2.56TBです。どちらもパフォーマンスを重視して最適化されており、より高速のI/Oと関連付けられています。その反面、スペースが限られているため、膨大な量のデータが絶えずクラスタに投入される場合には、常に監視してスケールアップを図る必要があります。
  • デンスストレージ(HDD): 小さい方のデンスストレージのオプション(DS2.XLarge)で、ノードあたり2TBのストレージが付いています。大きい方のデンスストレージオプション(DS2.8XLarge)のストレージは、ノードあたり16TBです。デンスコンピューティングのオプションに比べてI/Oは遅いものの、通常は十分なディスク容量があるため、クラスタのディスク容量はデンスコンピューティングのノードに比べて必要な監視の頻度は低くなります。

Redshiftのクラスタのサイズを上げるには、それぞれのタイプのノードをアップグレード(垂直にクラスタをスケールアップ)するか、クラスタ自体にさらにノードを追加(水平にクラスタをスケールアップ)する必要があります。

Redshiftのアーキテクチャの概要について詳しくは、Amazonのこちらのページをご覧ください。

データの種類

Amazon Redshiftは列形式でデータを格納します。 テキストファイル(区切られたもの)、JSONAvroから表形式のデータを取り込めるほか、EMRDynamoDBといった他のAWSサービスから直接データを取り込むことも可能です。Amazon Redshiftは、SQLに依存するリレーショナルデータにクエリを実行し、投入される未処理データをすべて列状のリレーショナル形式に変換します。その詳細はユーザーから抽象化されたものです(Parquetを使ったことのある方からすると、このフォーマットは概念的に似ています)。

Amazon Redshiftは、フラット化された非正規化スキーマ上でその性能を発揮します(ただし、結合を効率的に行うために分散とソートキーが問題なく定義されている必要があります)。Redshiftの圧縮は効率的なため、他の多くのデータベースに比べると、冗長なデータや希薄なデータはAmazon Redshiftでは気にする必要はありません。半構造化データや非構造化データはRedshiftのテーブルにインポートすることはできず、これらはS3ファイルに格納され、Hive Metastoreを用いたRedshift Spectrumを利用して直接アクセスすることができます。

AWS RedshiftはPostgreSQLの言語と似ており、同じ分析機能を数多く備えています。そのため、コツを掴んでわずかな違いに慣れるのも比較的簡単です。

推奨される最大データサイズ

Amazon Redshiftの最大のクラスタは、テーブルに2ペタバイトものデータを格納できます。これは膨大な量のデータで、おそらく容量が足りなくなるよりはるか前に、並列クエリの限界に達するでしょう。

Spectrumが加わったことで、Redshiftのクエリの限界は実質的になくなりました。Spectrumはクエリの塊をS3で実行でき、そのサイズは基本的に無制限です。また、Spectrumはクエリ単位で必要なコンピューティングリソースを動的に取得するため、Spectrumを通したクエリについては並列処理の制限も問題になりません。

AWS Redshiftの導入と利用

Amazon Redshiftの導入に関する注意事項

AWS Redshiftはフルマネージドのソリューションです。つまり、AWSコンソールを介して、思った通りの仕様を備えたクラスタを作り出すのも簡単です。ハードウェアに関するあらゆる懸念にはAmazonが対応します。

ただし、Redshiftにはスキーマやテーブルを最適化する数多くのオプションがあるため、ベストプラクティスを十分に理解することが重要です(AWS のまとめた資料はこちら)。

データの読み込み:自分でやる場合

AWS Redshiftへのデータの読み込みは一般的にCOPYコマンドを使います。このコマンドはAmazon Redshift MPPアーキテクチャを活用して、ファイルの読み込みと書き込みを並列で処理します。Amazon RedshiftとSpectrumを併用することで、データをインポートすることなく、S3でデータがある場所に直接アクセスすることも可能です。こうすれば、次の5つの方法を使ってRedshift内からデータにアクセスできます。

テーブル設計についての注意事項

自分でデータを読み込む場合、パフォーマンスを大きく左右する一部のパラメータをテーブル作成時に選択しなければならないため、まずテーブルの設計について考えることが重要です。Redshiftのインスタンスに読み込むテーブルを設計する最適な方法を理解してパフォーマンスを最大限に引き出すために、AmazonのTuning Table Design(テーブル設計のチューニング)チュートリアルに目を通すことをお勧めします。

データの読み込み:データ統合のパートナーを活用

AWSが推奨するサードパーティ製のETLサービスやデータ統合サービスはたくさんあり、Redshiftへのデータの読み込みプロセスはずっと簡単です。ニーズの実情に応じて、当社ではStitchFivetranMatillionTalendAloomaといったパートナーをお勧めしています。

データ統合のパートナーを選ぶ際は以下の点を検討しましょう。

複製するデータソースはどれですか?Redshiftのクラスタでどのデータソース(Salesforce、HubSpot、Zendesk、Google Analyticsなど)を一元管理するかリストを作成し、それをサポートするパートナーを探しましょう。プロバイダによっては、カスタムの統合を構築する際に役立つAPIを用意しているところもあります。

サービスの料金体系は?データ量が少ない統合をたくさん実行しなければならない場合は、従量課金制のサービスが最適と言えます。データ量の多い統合が数件しかなければ、統合1件ごとに課金されるサービスを選びましょう。

クエリを実行する前にデータを変換しますか?Redshiftに読み込む前に機密データを匿名化したりデータを変換する必要があれば、必要な変換のタイプに対応できる統合パートナーを選びましょう。

データホスティングや認証(HIPAAなど)で特殊な要件はありますか?AWSクラウドのセキュリティは最高水準ですが、業種や国によっては顧客データを特定の地域内に置いたり、ベンダーが特定の手続きに従うことを義務付けています。

Redshiftのパフォーマンスを最適化するツール

Redshiftには、そのクラスタのパフォーマンスを最適化するための数多くのリソースやツールが用意されています。これらの利用方法を理解すればパフォーマンスを迅速に高めることができる一方、使用方法を誤るとパフォーマンスの低下につながる可能性があります。

ソートキー

Redshiftの各テーブルには1つ以上のソートキーがあります。ソートキーは索引のようなもの。アルファベット順になっていない辞書で単語を調べることを考えてみましょう。ソートキーを設定しなければ、Redshiftも同じ状態になります。Redshiftは1MB単位のブロックでデータを格納し、そのブロックにあるソートキーごとに最小値と最大値を保存します。ソートキーの主なメリットは、ソートキーが存在してクエリがその列によって限定される場合、Redshiftは関連性の低いデータのブロックを省略できます。その結果、大規模なデータセットにクエリを実行する際、パフォーマンスを大幅に高めることが可能です。

500億行のイベントテーブルに3年分のデータがあるとします。クエリを実行する対象は、ほとんど「本日」か「過去7日間」です。「created_at」にソートキーが設定され、そのフィールドにフィルターが含まれている場合、クエリの実行時にRedshiftは行(データのブロック)の99%以上を省略することが可能です。

結合と配布キー

ノード全体にテーブルが効率よく分散していれば、Redshiftにおける結合のパフォーマンスは大幅に向上します。配布キーを使って結合の際のデータ転送を最小限に抑えることで、クエリのSLAを格段に改善することができます。

テーブルのパーティション分割

変化のない大規模なデータセット(ログデータ、ウェブの追跡データなど)が時間の経過とともに増大した場合、日、週、月単位でテーブルを分割すると、詳細な履歴を必要とするクエリは限られるため、クエリにかかる時間を効率的に短縮できます。Redshiftには、基底にあるテーブルを結合(UNION)する手段としてビューがあります。これを利用すれば、単一のテーブルと同じようにクエリを効率的に実行することができます。

エンコーディングと圧縮

圧縮することで、Redshiftのディスク上に保存されるデータの全体量を大幅に削減できます。そうすることで、クエリごとに読み込まれるデータ量も少なくなります。Redshiftには適切な圧縮エンコーディングを自動的に選択する機能もありますが、手動で設定することも可能です。

バキュームと分析

削除した行の容量を再び取得し、順序を無視して読み込まれたデータを正しくソートするには、Redshiftテーブルのバキュームを定期的に実行する必要があります。万全なクエリのプランニングを行うには、ANALYZEコマンドを用いてテーブルの統計を最新の状態に保つことが非常に重要です。

アナリティクスを快適に

ビジネスインテリジェンス、ビッグデータ分析、顧客の360°ビュー。
Lookerはお客様のどんなニーズにもお応えします。当社のデータエキスパートにご相談ください。

デモをリクエスト