Redshift

【VPC内リージョンサービス】

Redshift は、ペタバイト級のデータを高速に処理できる データウェアハウス(DWH) です。

SQL準拠 / PostgreSQL互換 の構文でクエリを実行でき、既存のBIツールやアプリケーションと高い互換性を持ちます。

内部的には クラスタノード で構成され、データを分散配置するための ディストリビューションキー を用いることで、効率的な並列処理(MPP)を実現します。データは 列指向ストレージ(Columnar Storage) で格納され、ソートキー や 圧縮エンコード によりI/Oを最適化し、高速なクエリ応答を可能にしています。

マテリアライズドビュー による結果キャッシュや 結合最適化 により、複雑な分析クエリも高パフォーマンスで実行できます。さらに、AQUA(Advanced Query Accelerator) と RA3ノード を活用することで、ストレージ分離型のスケーラブルな構成が可能です。

Redshift Spectrum を使用すると、S3 上のデータを直接参照してクエリを実行でき、Athena と同様にデータレイク統合分析を実現します。

運用面では、Concurrency Scaling や Redshift Serverless によって、負荷や利用状況に応じて柔軟にスケールすることができます。

メタデータ管理には Glue Data Catalog / Lake Formation を活用し、Glue, QuickSight, Lambda, Kinesis などのサービスとシームレスに連携します。

AWS Glue / Data Pipeline / DMS と組み合わせることで、データの抽出・変換・移行(ETL)を自動化できます。

セキュリティと運用面では、自動スナップショット / モニタリング により高い可用性と可観測性を確保します。

料金体系は オンデマンド / リザーブドインスタンス / Serverless従量課金 から選択でき、コスト最適化も容易です。

重要用語

ノード
ディストリビューションキー
列指向ストレージ
マテリアライズドビュー
Concurrency Scaling
関連サービス
Lake Formation
QuickSight

ユースケース

データウェアハウスによるBI分析基盤RDSや業務システム、S3のログデータなどを集約し、RedshiftにロードしてBIツールからの集計・可視化に利用する。
長期データの時系列分析数年分の売上データやアクセスログなどをRedshiftに蓄積し、期間をまたいだ傾向分析やレポート作成を行う。
S3データレイクとの連携分析Redshift Spectrumを使って、S3上のデータを直接クエリしつつ、頻繁に使うデータはRedshiftローカルに置くハイブリッド構成をとる。

ベストプラクティス

ソートキーと分散キーの設計クエリとデータ分布に合わせてキーを設定し、性能を最適化する。
ワークロードマネジメントWLMでクエリキューを制御し、重要クエリの優先度を上げる。
スナップショットと自動メンテナンス定期的なスナップショットとVACUUM/ANALYZEでクラスタを健全に保つ。

高可用性・バックアップ・リトライ

高可用性・バックアップ・リトライ設計のポイント
【デフォルト】AWS内部で冗長化
 ・ノード内でのデータミラーリング(各コンピュートノード内で、データが自動的にミラーリング)
 ・メタデータ(クラスタのメタデータやカタログ情報がリーダーノードとS3で冗長化)
【マルチAZ配置】(RA3クラスタのみ:デフォルト)
【データソースとの接続経路】の冗長化(S3、RDS等との接続をVPCエンドポイント経由にする)
【クライアント接続】の冗長化設計(複数のリーダーノードエンドポイント活用)
【データパイプライン】の冗長化(ETL処理の複数スケジュール設定)
【自動バックアップ】バックアップ保持期間 1 ~ 35 日(0 を指定すると自動バックアップ無効)
 デフォルト 1 日
 クラスタデータを S3 に自動スナップショットとしてバックアップ
 PITR:日次スナップショット+トランザクションログを用いて、保持期間内の任意時点に復元可能
【スナップショット】任意のタイミングで手動スナップショットを取得可能
 保持期限は無制限(ユーザーが削除するまで保持)
 クラスターのデータ全体を S3 にスナップショットとして保存
 スナップショットからいつでもクラスターを復元可能(スナップショット時点の状態)

セキュリティ

関連サービス設定内容
KMS(データの暗号化と鍵の安全管理)【クラスタやスナップショットの暗号化が必要】
 独自KMSキーを使うことを推奨(鍵操作、監査)
Secrets Manager(機密情報の安全管理)シークレット(秘密情報)の作成が推奨
 BIツールやETLジョブからアクセスする認証情報
SSM Parameter Store(設定情報の一元管理)-
CloudTrail(操作履歴の記録・監査・追跡)【自動記録】
作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI)
データ操作は追跡できない(データプレーンAPI)
Config(リソースの構成状態・設定変更を記録)【Configが有効な場合】
クラスタ設定変更履歴・暗号化/パブリックアクセス/監査ログの準拠評価
GuardDuty(脅威を自動検出)【GuardDutyが有効な場合】
クラスタAPI操作の異常検知
Redshiftが実行ロールを引き受ける典型的な連携パターン
実行ロールを介して連携するサービス実行ロールにアタッチするポリシー
CloudWatch Logslogs:CreateLogGroup
logs:CreateLogStream
logs:PutLogEvents
S3s3:ListBucket
s3:GetObject
s3:PutObject
DynamoDBdynamodb:GetItem
dynamodb:PutItem
dynamodb:UpdateItem
dynamodb:DeleteItem
dynamodb:Query
dynamodb:Scan
Lambdalambda:InvokeFunction
SageMakersagemaker:InvokeEndpoint
Glue Data Catalogglue:GetTable
glue:GetDatabase
glue:GetPartitions
glue:GetDatabases
glue:GetConnection
Secrets Managersecretsmanager:GetSecretValue
secretsmanager:DescribeSecret
SSM Parameter Storessm:GetParameter
ssm:GetParameters
KMSkms:Encrypt
kms:Decrypt
kms:GenerateDataKey
kms:DescribeKey
※)権限設計の原則

信頼ポリシー: Redshift

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "redshift.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

ログ・監視

ログ出力先ログの種類
S3監査ログ
CloudWatch Logs優先の原則
標準メトリクス
メトリクス名説明
CommitQueueLengthコミットキュー長
NetworkReceiveThroughput受信スループット
NetworkTransmitThroughput送信スループット
ReadIOPS読み取りIOPS
TempBlocksToDiskテンポラリ書き込み量
WLMQueueLengthWLMキュー長
WriteIOPS書き込みIOPS
CPUUtilizationCPU使用率
DatabaseConnectionsDB接続数
HealthStatusクラスタヘルス

制限値(固定値/ハードリミット/ソフトリミット)

ハードリミット制限値
クラスターあたりのノード数最大128(ra3)

ソフトリミット制限値
スナップショット数/クラスター20(自動)、20(手動)
パラメータグループ数/リージョン100
セキュリティグループ数/リージョン20
サブネットグループ数/リージョン20
イベントサブスクリプション数/リージョン20
同時接続数500(デフォルト)、最大8,192
クラスター数/リージョン200

AWS CLIのサンプルコード

CloudFormationのサンプルコード

Terraformのサンプルコード

料金計算

課金項目説明
ノード時間クラスターノードの稼働時間
バックアップストレージ自動スナップショットの容量
データ転送インターネットへのデータ転送量
Redshift Spectrumスキャンしたデータ量(TB単位)
Concurrency Scaling同時実行スケーリングの使用時間
料金計算ツール

公式ページ

AWSドキュメント Redshift