Amazon Redshift
AWSが提供するデータベースサービスの一つでペタバイトを扱えるデータウェアハウス。大量のデータを高速で扱えるため分析用途で使う。
データウェアハウス(DWH:Data WareHouse)とは、複数のシステムからデータを収集・統合・蓄積し、分析に使用するデータベース。蓄積したデータは、例えば時系列や顧客のデータに基づいて分析され、結果はシステム効率化や経営改善などの意思決定に利用。このように、大容量データを分析し経営に役立てることを「BI:Business Intelligence」といい、RedshiftはBIの分野で活用。
DWHでは、基本的にデータの削除・更新は行わずに追加(蓄積)されていきますので通常のデータベースよりも多くの容量が必要になります。RedshiftではPB(ペタバイト、TB:テラバイトの上の単位)級のストレージに対応しており、大量のデータを扱うことができます。
Amazon Kinesisと連携すると、ストリーミングデータをKinesisで収集しRedshiftで分析を行う、というようなことが可能。
●Redshiftのアーキテクチャ
Redshiftでは以下の構成でデータを管理。
Redshiftは大量のリクエストを分散させ並列で処理するクラスタ構成になっています。
・Leaderノード(リーダーノード)
各クラスタに一台だけ存在する司令塔(Leader)となるノード。
アプリケーションなどからのリクエストを受け付けて各Computeノードへ割り振り、またその結果を取りまとめてアプリケーションへ返す役割を果たします。
・Computeノード(コンピュートノード)
Leaderノードからの命令を処理するノード。
一つのComputeノードはCPU、メモリ、ストレージを搭載しており、Computeノードを増やすことでパフォーマンスを向上させることができます。
・ノードスライス(スライス)
Computeノードのリソースを更に細分化した単位をノードスライスと呼びます。スライスの数はComputeノードのインスタンスタイプによって異なります。
●カラムナ(Columnar:列指向)データベース
通常のデータベース管理システムでは「行」が中心に考えられていますが、カラムナデータベースでは「列」の単位でデータが管理されています。例えば「売り上げを集計する」といった集計作業では各日・各月の「売り上げ列」を集計しますから、行単位でデータがまとめられている(=列データが散在している)よりも、列単位のデータがまとまっている方が効率的にアクセスできる、という仕組みです。
Redshiftはカラムナデータベースの構造により、大容量のデータを蓄積していても、高速のパフォーマンスを維持したまま集計処理などができるようになっています。
●データのロード・エクスポート
Redshiftでは、Amazon S3上のデータファイルのロード(読み込み)や、S3へのエクスポート(保存)を行うことができます。
扱うことのできるファイル形式は「構造化データ形式(CSVなど)」「半構造化データ形式(ParquetやORC、JSONなど)」と、これらのファイルを圧縮した形式(gzip、bzip2など)があります。
「構造化データ」とはRDBMSで利用されている形式のことで、行・列の概念があるデータをいいます。逆に行・列の概念を持たないデータ形式を「非構造化データ」といい、そのうちある規則性を持ったデータ型(XMLやJSONなど)を「半構造化データ」と呼びます。
RedshiftではS3上にある構造化データや半構造化データをロードしてクエリすることができ、またデータを追加・更新したテーブルは上述のファイル形式でS3へエクスポートできます。これによりS3上のデータをAmazon Athenaなど他サービスで活用することも可能です。
なお、S3のように構造化・非構造化に関わらずデータを一元管理する場所を「データレイク」と呼びます。
●Redshiftのバックアップ
Redshiftでは、スナップショットを採取することでバックアップをとります。スナップショットは、RedshiftのディスクイメージをAmazon S3へ保存します。
バックアップを行うスケジュール(8時間ごと、12時間ごとなど)は自分で設定することもできます。なお、スナップショットは一定時間を経過すると削除されます。
スナップショットは手動で採取することもでき、手動で採取したスナップショットは、保存期間を無期限にすることもできます。
また、スナップショットは異なるリージョンへ保存することもできます。これを「クロスリージョンスナップショット」と呼びます。
リージョンをまたがるためデータの転送費用が別途発生しますが、災害時に備える場合や、また異なるリージョンでRedshiftクラスタを再構築したいような場合に利用するのがよいでしょう。
【Amazon Redshift Spectrum】
旧来のRedshiftでは、データが蓄積され大容量化するとS3にあるデータをRedshiftへロードする際に時間がかかっていました。この問題を解決したのがRedshift Spectrumです。
Redshift Spectrumは、S3にあるデータをRedshiftへ取り込むのではなく、S3上のデータを外部テーブルとして参照できるようにした機能
S3上のデータ(外部テーブル)には複数のRedshiftクラスタからアクセスできたり、Redshift内のデータとS3上のデータに対してクエリを実行することもできます。また、利用頻度の低いデータをS3上に保持しておくことでRedshiftのディスクスペースを節約できるという利点もあります。