目次
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が自動で最適な方法を選択 |
関連の記事
