【AWS】Amazon Redshift ~ 入門編 ~

■ はじめに

Amazon Redshift について、徐々にメモっていく

目次

【1】Amazon Redshift
【2】特徴
【3】メリット・デメリット
 1)メリット
 2)デメリット
【4】他DB・サービスとの違い
【5】Redshift の システム構成
 1)リーダーノード(Leader Node)
 2)コンピュートノード(Compute Node)
 3)マネージドストレージ

【1】Amazon Redshift

* フルマネージド型のデータウェアハウス
* 名前の由来は、「赤方偏移(せきほうへんい、英: redshift)」かららしい

※ データウェアハウス(DWH:Data WareHouse)

* 基幹系などの複数システムから、必要なデータを収集し、
   目的別に再構成した統合データベース

* データ分析や意思決定に役立てる目的で編成され作られるため、
   BI(ビジネスインテリジェンス)に位置づけられている

* 在庫、財務、小売販売システムなど、
  さまざまなソースからのデータを集めるように設計

【2】特徴

* PostgreSQL 8.0.2 に基づいている (「■ 使用上の注意」の 1)を参照)

* 列指向型(カラムナ)データベース (※ 補足1 を参照)

* 超並列処理(MPP:Massively Parallel Processing)
  cf massively(マッシブリー) = 大規模に、とてつもなく

* シェアード・ナッシング(Shared Nothing; SN)(※ 補足2 を参照)

※ 補足1:列指向型(カラムナ)

* 類似したデータが集まるため、高い圧縮率
* 詳細は、以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2011/02/16/205224

※ 補足2:シェアード・ナッシング
https://www.atmarkit.co.jp/fdb/rensai/10_dwh/02/dwh02_1.html

* DB処理を複数のノードに分散することにより
 処理性能を向上させる仕組み
 => ディスクをノードで共有しない(非共有=シェアード・ナッシング)

【3】メリット・デメリット

1)メリット

DBに対するアクセス競合が発生せず、ノードを増やせば増やすほど
リニアに性能が向上する

2)デメリット

あるノードで障害が発生したとき、ほかのノードは障害が
発生したノードのディスク領域にアクセスできないため、
共有ディスク方式(シェアードエヴリシング)と比べると
耐障害性に劣るとされている

【4】他DB・サービスとの違い

* 以下の関連記事を参照のこと。

Amazon Redshift ~ 他DB・サービスとの違い ~
https://dk521123.hatenablog.com/entry/2021/08/29/000000

【5】Redshift の システム構成

* 構成は以下で成り立っている。
~~~~~~~~~~~~~~
1)リーダーノード(Leader Node)
2)コンピュートノード(Compute Node)
3)マネージドストレージ <= 新しくできた部分
~~~~~~~~~~~~~~

* システム構成図は、以下の公式サイトを参照。

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

1)リーダーノード(Leader Node)

* SQL処理コードの生成と展開

2)コンピュートノード(Compute Node)

* ローカル列志向ストレージ
* クエリの並列実行

3)マネージドストレージ

* Redshift 管理 S3 バケット

参考文献

https://www.slideshare.net/AmazonWebServicesJapan/amazon-redshift-20
https://codezine.jp/article/detail/7234
https://developer.medley.jp/entry/2019/07/01/193427
https://dev.classmethod.jp/cloud/aws/cm-advent-calendar-2015-getting-started-again-aws-redshift/
Redshift の システム構成
https://gihyo.jp/dev/serial/01/redshift/0005

関連記事

Amazon Redshift ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/04/07/124519
Amazon Redshift ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/08/31/171754
Amazon Redshift ~ キャスト ~
https://dk521123.hatenablog.com/entry/2021/09/08/202004
Amazon Redshift ~ 文字列結合 ~
https://dk521123.hatenablog.com/entry/2021/09/09/093855
Amazon Redshift ~ 他DB・サービスとの違い ~
https://dk521123.hatenablog.com/entry/2021/08/29/000000
Amazon Redshift ~ DistStyle / DistKey / SortKey ~
https://dk521123.hatenablog.com/entry/2021/09/04/172021
Amazon Redshift ~ VACUUM ~
https://dk521123.hatenablog.com/entry/2021/09/05/214403
Amazon Redshift ~ 自動採番 / IDENTITY ~
https://dk521123.hatenablog.com/entry/2021/08/31/194134
Amazon Redshift ~ COPY コマンド ~
https://dk521123.hatenablog.com/entry/2021/07/21/214248
Hiveテーブルデータ を Redshift に移行するには
https://dk521123.hatenablog.com/entry/2021/09/01/200818
Hiveテーブルデータ を Redshift に移行時のCOPYコマンドエラー
https://dk521123.hatenablog.com/entry/2021/09/03/134359
Glue/Python から Redshift に接続することを考える
https://dk521123.hatenablog.com/entry/2020/08/26/193237
Glue/Spark から Redshift にデータ追加することを考える
https://dk521123.hatenablog.com/entry/2020/09/23/111741
Amazon EMR ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/20/230519
NoSQL(Not Only SQL) ~概要~
https://dk521123.hatenablog.com/entry/2011/02/16/205224