おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-データベース-Redshiftの概要

今回のテーマ:Redshiftの概要

主要サービスの公式資料

Amazon Redshift: docs.aws.amazon.com

概要

Redshiftは高速でスケーラブルな費用対効果の高いマネージド型DWH/データレイク分析サービスとなります。
要点は以下の項目があります。

  • 数百ギガバイトのデータから開始し、ペタバイト以上まで拡張可能
  • 1テラバイトあたり年間1000USD以下で利用可能
  • 自動ワークロード管理や自動テーブルメンテナンス等が多くメンテナンスタスクやデータ配置が自動化されるフルマネージド型
  • PostgreSQL互換の列指向データモデル
  • 複数ノードをまとめたクラスター構成で単一AZで起動し、マルチAZ構成は不可
  • RA3インスタンスが最大。他のクラウドデータウェアハウスの3倍に達するパフォーマンス
  • AQUA(Advanced Query Accelerator)による分散キャッシュで、Redshiftが他のクラウドデータウェアハウスに比べて最大10倍の速度で動作

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

データウェアハウス(DWH)は、構造化データを利用した経営思考分析型のデータベースになります。

概要

  • データの抽出・集約に特化したBIデータ分析用データベース
  • 読み込むデータ構造を予め設計し、加工してから利用分のデータを蓄積
  • レスポンス重視でデータ抽出・集計が速いが、更新トランザクションは遅い

アーキテクチャ

  • データをパーティショニングし複数ディスクから読み込む
  • 列指向でデータを格納

利用ケース

  • 会計データなどの業務系の構造化データを分析用に加工しBIで利用
  • KPI測定/競合分析/アクセス分析など

インスタンスタイプ

利用するデータサイズと増加予測に応じて2つのインスタンスタイプから選択します。

RA3インスタンス

  • コンピューティング性能とマネージドストレージのスケーリングと支払いを独立することで、DWHを最適化
  • データ量の増大が予想される場合はRA3ノードの利用が推奨
  • 最低2ノード必要
  • 1時間の1ノード当たり、最安で約4UDS(3.836USD)

DC2インスタンス

  • 固定ローカルSSDストレージを使用したDWH
  • データサイズ増加に対しノードを追加しクラスターのストレージ容量増強
  • 未圧縮で1TB未満のデータセットならばDC2ノードタイプの利用が推奨
  • 最低1ノード必要
  • 1時間の1ノード当たり、約0.3UDS(0.314USD)

Redshiftの構成

クラスターというグループ単位で、複数ノードによってデータ処理を実行する構成となります。
概要図は以下になります。

f:id:In-houseSE:20210808150218p:plain

Redshiftの特徴的な機能など

Redshiftは列指向型のRDBであり、データを分散・高速処理が可能な仕組みとなります。
主な特徴としては以下のものがあげられます。

列指向型RDB

  • 列指向型ストレージにデータを格納するRDBのデータモデルを採用
  • 大容量のデータアクセスを容易にしディスクI/O効率化

データ圧縮

  • データ圧縮により一度に読み込めるデータ量が多くなることで処理を高速化
  • 分析ワークロードでブロック単位でデータを格納しディスクI/O効率化

ソート

  • データが格納されるブロックに対しメタデータを付与して検索値とする
  • リーダーノードのインメモリ上にメタデータを格納
  • データのソート順をテーブルごとにソートキーとして指定

データ分散

  • データ量とクエリ内容に応じてノードに対する分散処理を調整し効率的で高速な処理を実現
  • キャッシュによる高速化を実現

マテアライズドビュー

  • 頻繁に実行するクエリパターンを結合・フィルタ・集計・射影によって高速化する機能 公式資料は以下になります。

docs.aws.amazon.com

運用の自動化

自動的なメンテナンス機能と詳細モニタリングによる簡易な運用が可能です。
基本的にはRDSのメンテナンスと同一の対応となります。
項目して以下のものがあります。

CloudWatchとの連携

  • 初期設定でCloudWatchメトリクス取得が自動で実施されRedshiftコンソールないで確認可能

自動バックアップ

  • 自動でバックアップを定期取得可能
  • メンテナンスウィンドウでバックアップ実施時間を指定可能
  • スナップショットを手動で取得することも可能

自動メンテナンス

  • パッチ適用も自動で実施
  • メンテナンスウィンドウでパッチ適用時間を指定可能

スケジューリング機能

機械学習によるクエリ効率化

機械学習によりクエリ実行を調整し効率的な自動実行を補助機能があります。
以下は効率化の概要になります。

テーブルメンテナンスの自動化

  • テーブルの分散スタイルの自動最適化
  • 統計情報の自動更新
  • データの再編成の自動実行

自動ワークロード管理

  • 複数クエリの実行をワークロード管理で設定する際に、機械学習でクエリ実行の優先順位を決め自動化

ショートアクセルレーション

  • 機械学習アルゴリズムを使用し対象クエリを1つ1つ分析し、クエリの実行時間を予測し、実行時間の短いクエリを実行時間の長いクエリよりも優先し実行
  • WLMキューを削減可能

cf)WLM:手動ワークロードで使用する管理

docs.aws.amazon.com

設定のレコメンデーション

  • 自動でクラスターパフォーマンスなどを分析し、最適化やコスト削減に対するレコメンデーションを実施

ワークロード管理(WLM)

ワークロードに応じて複数のキューを設定し、クエリ割り当てルールに基づいてキューを設定後、優先順位を設定することが可能です。
ロングやショートは機械学習で実装します。
概略図は以下のようになります。

f:id:In-houseSE:20210808154837p:plain

クエリエディタ

マネージメントコンソール画面よりRedshiftのデータベースに接続しクエリ実行が可能です。

スケーリング

Redshiftのノードタイプ変更・追加とクラスターの追加によってスケーリングが可能です。

  • ノード追加
    コンピューティングノードを追加することでパフォーマンスを向上させます

  • クラスターの追加
    Concurrency Scalingにより急な同時実行リクエストに対応するため、一時的にクラスタを自動的に数秒で追加し高速なパフォーマンスを発揮させます。(追加クラスターは1~10個までとなります)

Redshift Spectrum

Redshift Spectrumはデータレイクを分析する際に使用されます。
また、ユーザーが管理するS3バケットに対し直接データ解析を実行が可能となります。
概略図は以下のようになります。

f:id:In-houseSE:20210808155913p:plain

Redshiftへデータ連携

Redshiftへデータを移動させることで、DWHとして解析基盤の集約化をすることが重要となります。
以下はRedshiftへ連携するAWSサービスと概要になります。

S3

  • 最も頻繁に使用されるデータ連携先
  • S3からデータを取得しRedshiftで解析することが可能
  • S3内部データ解析を直接実行も可能

Kinesis

  • Kinesis data Firehoseを利用しストリーミングデータの格納先
  • 解析に利用することが可能

RDS

  • AWS Data PipelineやDMSを利用しデータの移行が可能

DynamoDB

  • DynamoDBからRedshiftへデータコピーが可能

Amazon EMR

  • EMRからRedshiftへデータコピーが可能

Redshiftからデータ連携

RedshiftからQuickSightを利用したデータ可視化に加えてS3とデータ抽出が可能です。 以下はRedshiftから連携するAWSサービスと概要になります。

Amazon QuickSight(BIツール)

  • Redshiftに接続しデータの可視化を実行可能

S3

  • UNLOADコマンドを実行し、RedshiftからS3にデータ抽出することが可能

Amazon Machine Learning

  • Redshiftを機械学習の学習データとして設定し利用可能

RDS

  • PostgreSQLの機能を利用しデータをRedshiftからRDSへ連携可能

Amazon QuickSight(BIツール)

AWSでBIツールを導入する際に使用します。
QuickSightはデータを可視化・解析するためのBIツールとなります。
また、Redshiftデータを開始可能となります。

AWS Glue

AWS Glueは、データを抽出、変換、ロード(ETL)を行う完全マネージド型サービスとなります。

AWS Lake Formation

AWS Lake Formationは、複雑な設定が必要なデータレイクの構成を簡単に素早く実現するサービスとなります。

AWS EMR

AWS EMRは、Apache Spark、Apache Hiveなどブックデータフレームワークを使用し、大量データを処理・分析します。

今回のテーマは以上です。