AWS Redshiftとは

目次

Redshiftとは

Redshiftとは、AWSが提供する大量のデータを高速に分析するためのデータベースサービスです。

Redshiftは大量データの集計・分析に特化しています。

 

通常のDBとの違い

項目 Redshift 通常のDB(RDSなど)
用途 大量データの分析・集計 日常的なデータ読み書き
データ量 TB〜PB規模 GB〜TB規模
得意な処理 大量データの集計・分析 少量データの高速読み書き
データ構造 列指向 行指向
主な利用者 データアナリスト・BI アプリケーション

 

主な特徴

列指向ストレージ データを列単位で保存するため、特定の列だけを集計するような分析クエリが非常に高速です。
例:特定の期間の売上合計だけを知りたいとき、関係のない住所や氏名のデータを読み飛ばせるため、スキャンするデータ量を減らせます。
大規模データ対応 テラバイト〜ペタバイト規模のデータを扱えます。
SQLで操作できる PostgreSQLベースのSQLで操作できるため、SQLを知っていればすぐに使えます。
AWSサービスとの連携 S3・Glue・QuickSightなど他のAWSサービスと連携しやすい構成になっています。

 

主な用途

  • 売上・アクセスログなどの大量データの集計・分析
  • BIツール(QuickSight・Tableauなど)のデータソース
  • 複数システムのデータを統合したデータウェアハウスの構築
  • 機械学習のためのデータ準備・加工

Redshiftのアーキテクチャ

リーダーが指示して、コンピュートが、スライス単位で並列処理します。

ノード数・スライス数が多いほど、並列度が上がり処理が速くなります。

 

リーダーノード(Leader Node)

クライアントとの窓口 + クエリの司令塔

  • クライアントからのSQL接続を受け付ける唯一のノード
  • SQLを解析して実行計画を作成する
  • 処理をコンピュートノードに分散して指示する
  • 各コンピュートノードの結果を集約して、クライアントに返す
  • データ自体は保持しない(データはコンピュートノードにある)

ポイント

  • ユーザーが意識するのは基本的にリーダーノードのみ
  • 接続先エンドポイントはリーダーノードのアドレス
  • リーダーノードのみで完結するクエリもある(システムテーブルの参照など)

 

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

実際にデータを保存・処理する、作業サーバ

  • データを分散して保存する
  • リーダーノードの指示に従い、並列でデータを処理する
  • ノード間で中間結果をやり取りすることもある
  • ノード数を増やすほど処理能力・ストレージ容量が向上する

 

ノードタイプ

タイプ 特徴 向いている用途
RA3 ストレージをS3に分離・スケール柔軟 現在の主流・推奨
DC2 高速SSD搭載・コンピュート重視 高速処理が必要な場合

 

スライス(Slice)

CPU単位の作業者

  • 1つのコンピュートノードの中をさらに分割した処理単位
  • 各スライスは独立してデータを保持・処理する
  • スライス数はノードタイプによって決まる(例:2スライス、4スライスなど)
  • データはスライス単位で分散して格納される

 

スライス数の例

ノードタイプ スライス数/ノード
ra3.xlplus 2
ra3.4xlarge 4
ra3.16xlarge 16

 

データの分散(分散キー)

データはスライス単位で分散して格納されます。この分散方法を分散スタイルと呼びます。

分散スタイル 内容
KEY 指定した列の値でスライスに振り分け
EVEN ラウンドロビンで均等に振り分け
ALL 全スライスに同じデータをコピー
AUTO Redshiftが自動で最適な方法を選択

関連の記事

AWS Redshiftを作成・削除・実行結果を確認する

△上に戻る