【備忘】Amazon Redshiftの概要

# はじめに
##### ～AWS学習アウトプット第5弾～
AWS未経験者の私が学習したことをアウトプットし、将来的にはSAA合格を目指します。

今回は、**Amazon Redshift** の基本的な内容をまとめます。

# 目次
・Amazon Redshiftとは
・Redshiftの構成
・他AWSのデータベースとの違い
・クロスリージョンスナップショット
・Redshift Spectrum
・おわりに
・参考


# Amazon Redshiftとは
>**Amazon Redshift は、 クラウド内でのフルマネージド型、ペタバイト規模のデータウェアハウスサービス**です。Amazon Redshift Serverless を使用すると、プロビジョニングされたデータウェアハウスをすべて設定しなくても、データにアクセスして分析することができます。リソースは自動的にプロビジョニングされて、データウェアハウス容量はインテリジェントにスケーリングされ、要求が厳しく、予測不可能なワークロードであっても高速なパフォーマンスを実現します。データウェアハウスがアイドル状態のときには課金されず、使用した分のみ支払います。
：AWS公式サイトから引用

:::note warn
・Amazon Redshiftは、**データウェアハウス**のサービス
・**大量データの集計・分析に強い**
・**列指向**データベース
・**SQL** を使用
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074902/23e02ff5-2ba1-fd17-1e5a-5b528c076853.png)



# Redshiftの構成

### クラスター
>**クラスターは、1 つまたは複数のコンピューティングノードで構成されます。** クラスターが 2 つ以上のコンピューティングノードでプロビジョニングされている場合、追加のリーダーノードがコンピューティングノードを調整して、外部の通信を処理します。クライアントアプリケーションはリーダーノードとのみ直接通信します。
：AWS公式サイトから引用

:::note warn
・クラスターは**ノードの集まり**のこと
:::

### ノード
:::note warn
・ノードは**コンピューティングリソースの集まり**のこと
:::

#### リーダーノード
>リーダーノードは、クライアントプログラムおよびコンピューティングノードとのすべての通信を管理します。リーダーノードは、データベース操作を遂行するための実行計画、特に複雑なクエリの結果を取得するために必要な一連の手順を解析および作成します。**リーダーノードは、実行計画に基づいて、コードをコンパイルし、コンパイル済みのコードをコンピューティングノードに配布してから、データの一部分を各コンピューティングノードに割り当てます。**
：AWS公式サイトから引用

#### コンピューティングノード
>リーダーノードは、実行計画の個別要素のコードをコンパイルし、コードを個々のコンピューティングノードに割り当てます。**コンピューティングノードは、コンパイル済みのコードを実行し、最終的な集計のために中間結果をリーダーノードに返送します。**
：AWS公式サイトから引用

##### ノードスライス
>**コンピューティングノードはスライスに分割されています。** 各スライスは、ノードのメモリとディスク容量の一部を割り当てられ、ノードに割り当てられたワークロードの一部分を処理します。**リーダーノードは、スライスへのデータの分散を管理し、クエリまたは他のデータベース操作のワークロードをスライスに分配します。** スライスは、並列処理を行って操作を完了します。
：AWS公式サイトから引用

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074902/e4b0eff3-ea82-9052-3c5c-c1167b1193c1.png)



:::note warn
・**リーダーノードが処理を受け、コンピューティングノードに処理を依頼する**
・**コンピューティングノードは処理を実行し、結果をリーダーノードに返す**
:::

### データベース
>**クラスターは、1 つ以上のデータベースで構成されます。ユーザーデータはコンピューティングノードに格納されます。** SQL クライアントはリーダーノードと通信し、リーダーノードはクエリの実行をコンピューティングノードと調整します。
：AWS公式サイトから引用

:::note warn
・**ユーザーデータはコンピューティングノードに格納される**
:::

### 内部ネットワーク
>Amazon Redshift は、高帯域幅接続、近接性、およびカスタム通信プロトコルを活用することで、リーダーノードとコンピューティングノードの間に、プライベートかつ非常に高速なネットワーク通信を実現します。**コンピューティングノードは、クライアントアプリケーションが直接アクセスすることのない別の独立したネットワークで動作します。**
：AWS公式サイトから引用

### Redshift マネージドストレージ
>**データウェアハウスのデータは、Redshift マネージドストレージ (RMS) に保存されます**。RMS では、Amazon S3 ストレージを使用してストレージをペタバイト規模にスケーリングできます。RMS では、コンピューティングとストレージを個別にスケールして料金を支払うことができるため、コンピューティングのニーズのみに基づいてクラスターのサイズを設定できます。
：AWS公式サイトから引用


# 他AWSのデータベースとの違い
### Redshiftのキーワード
・フルマネージド型
・大量データを高速に扱うことのできるデータウェアハウス
・分析用途に利用できる
・列指向データベースのためクエリ速度の最適化とストレージコストの削減が可能
・SQLを使用する
・AZサービス

### 他データベースのキーワード
#### ①Amazon RDS
・リレーショナルデータベース
・自動スナップショット
・異なるAZ上にスタンバイ用のクラスターが構築できる
・SQLを使用する
・AZサービス(VPC内に配置)
・VPC内に配置することでセキュリティグループでアクセス制御が可能
#### ②Amazon DynamoDB
・NoSQL
・容量無制限
・リージョンサービス
・IAMでアクセス制御が可能
#### ③Amazon ElasticCache
・フルマネージド型
・インメモリデータベース
・非常に高速なデータアクセスが可能
・AZサービス(VPC内に配置)
・VPC内に配置することでセキュリティグループでアクセス制御が可能



# クロスリージョンスナップショット
>**Amazon Redshift は、データの自動的な増分スナップショットを定期的に取得し、Amazon S3 に保存します。** さらに、いつでも好きなときにデータの手動スナップショットを取得することもできます。（中略）**クラスターのスナップショットを別の AWS リージョンにコピーするように Amazon Redshift を設定できます。**　クロスリージョンスナップショットのコピーを設定するには、各クラスターでこのコピー機能を有効にし、スナップショットをコピーする場所と、コピーされた自動または手動のスナップショットをコピー先 AWS リージョンに保持する期間を設定する必要があります。クロスリージョンコピーがクラスターで有効になると、すべての新しい手動および自動スナップショットが、指定された AWS リージョンにコピーされます。
：AWS公式サイトから引用

:::note warn
・Amazon Redshiftは**スナップショットによりバックアップを行える**
・スナップショットは**異なるリージョンへ保存することもでき、「クロスリージョンスナップショット」** という
・**スナップショットからRedshiftクラスターの再構築が可能**
:::




# Redshift Spectrum
>Amazon Redshift Spectrum を使用すると、効率的にクエリを実行し、**Amazon Redshift テーブルにデータをロードすることなく、Amazon S3 のファイルから構造化および半構造化されたデータを取得**できます。Redshift Spectrum クエリでは超並列処理を採用しており、大きなデータセットに対する処理が非常に高速で実行されます。処理の多くは Redshift Spectrum レイヤーで生じ、データの大部分が Amazon S3 に保持されます。複数のクラスターが Amazon S3 で同じデータセットを同時にクエリできます。クラスターごとにデータをコピーする必要はありません。
：AWS公式サイトから引用

:::note warn
・Redshift Spectrumは**S3上のデータを効率的に参照する**ための仕組み
・**S3上のデータを外部テーブルとして参照**する
・Redshift SpectrumでアクセスするS3バケットとRedshiftクラスターは**同一リージョン**
・利用頻度の低いデータをS3上に保持しておくことによりRedshiftのディスクスペースを節約できる
:::


# おわりに
今回は、Redshiftについて整理しました。
他のデータベースと比較し、最適な運用を選択する問題は多く出題されるため、違いを把握することが必要となります。
AWS学習アウトプットは今後も続けますので、また機会がありましたらご覧ください。

# 参考
https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/welcome.html

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_high_level_system_architecture.html

https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/managing-snapshots-console.html

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c-using-spectrum.html


---------------------------------------------------

 株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください：

https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area