Skip to main content

Amazon Redshift

参考URL

Overview

Amazon Redshiftは、エクサバイトクラスのデータを標準SQLで分析可能なマネージド型のデータウェアハウスサービス。
またRedshiftは、さまざまなシステムからのデータを保存・分析などの「分析」のサービスとしての側面も持ち合わせている。
※RedShiftはPostgreSQLをベースに作られており pgsql コマンドで接続できるほか、さまざまなBIツールとの接続もサポートされている。
一方で分析性能を上げるためにベースのPostgreSQLから捨てている機能もある。

データウェアハウス(DWH)

データウェアハウス(DWH)というのは、さまざまなデータ源からデータを収集・統合・蓄積し、分析のため保管しておくシステム
データが時系列で保存されるため過去のデータ履歴を確認できると同時に、システムごとのデータを集約して全体のデータとして活用できより優れた企業の意思決定につながる。

RDBMSとの違い

RDBMSとは違って、継続的な書き込みや更新には向いておらず、一括でデータを書き込み、分析のため大容量データを読み出すという処理に最適化されている。
RDB設計における正規化はデータウェアハウスでは重視されず読み出しの高速化のためにあえて読み出しの高速化のためにあえて正規化しないでデータを格納することもある。

Amazon Redshiftでは、並列コンピューティングをサポートしており、大量のデータを短時間で読み出し・分析することが可能。
インターフェースとしては、BIツールやPostgreSQLクライアントから操作できる。

Redshift特徴

列指向ストレージ

一般的なRDBMSのデータ格納方式は行指向ですが、Redshiftは列指向でデータを格納する。
行指向と列指向のデータ格納方式は、それぞれ性質が異なる。

Image from Gyazo

Image from Gyazo

超並列処理(MPP)

Redshiftは、クライアントからクエリを受け付ける1つのリーダーノードと、リーダーノードから指示を受け実行クエリを処理する複数のコンピュートノードで構成され、これらをまとめてRedshiftクラスターと呼ぶ。
各コンピュートノードはそれぞれ並列に処理を行い、結果を統合してクライアントに返す。
この並列処理の仕組みをMPP(Massively Parallel Processing)と呼ぶ。

Image from Gyazo

Redshift Spectrum

Redshift SpectrumはS3上のデータを効率的に参照するための仕組み。
またRedshift SpectrumでアクセスするS3バケットとRedshiftクラスターは同一リージョンでなければならないため、当該リージョンで障害が発生した場合は利用できなくなる。
Redshift SpectrumはS3パケット内のデータに対して直接クエリを実行できるため、Redshiftへデータをロードする必要はない
AWSには、同様なサービスとしてAmazon Athenaがある。
Athenaも同じく、S3バケット内のデータに対して直接クエリを実行し分析できる。
Redshift Spectrumではサーバーリソースの割り当てをコントロールできますが、Athenaの場合はAWSが自動的に割り当ててくれる。
このため、クエリ処理のパフォーマンスを高めるためのサーバーリソース増強はRedshift Spectrumのみできる。

Redshift Spectrumは大規模で複雑なクエリを実行するのに適しており、Athenaはインタラクティブなクエリをシンプル化するのに適している。

Redshiftの可用性

Redshiftは現在、マルチAZ構成を取ることができず、クラスターは1つのAZ内で構成している。
しかし、AZが利用できなくなった場合、クラスターの再配置機能を有効にしておくことで、データの損失やアプリケーション側の変更なしに、別のAZに自動的に移動させることも可能。
また、災害対策(DR:Disaster Recovery:ディザスタリカバリ)構成を設定するには、クラスターのクロスリージョンのスナップショットコピーを有効にする。
これにより、クラスターのすべてのスナップショットが別のリージョンに複製される。

Redshiftのスナップショット

Amazon Redshiftでは、スナップショットを採取することでバックアップをとる。
スナップショットは、RedshiftのディスクイメージをAmazon S3へ保存する必要がある。
スナップショットは異なるリージョンへ保存できる。 これを「クロスリージョンスナップショット」と呼ぶ。
異なるリージョンへとったスナップショットからRedshiftクラスターを再構築できるので、大規模な災害への対策(Disaster Recovery:ディザスタリカバリ)や異なるリージョンでRedshiftクラスターを構築する場合に有効。