全5281文字
PR

 今回取り上げる「Redshift」は米Amazon Web Services(アマゾン・ウェブ・サービス、AWS)が提供するデータウエアハウス(DWH)サービスです。まずはDWHの特徴について確認していきましょう。

RDBMSとDWH

 DWHはRDBMS(リレーショナルデータベース管理システム)の一種であり、大量のデータを収集、蓄積、分析することに特化したデータベースです。OracleやSQLServerなどのRDBMSを大量データの収集、蓄積、分析用途で利用することもありますが、分析に特化したデータベースとしてDWHをシステムに組み込むケースが増えています。

 DWHの特徴として、分析などで大量のデータを扱う際に高速に処理できることが挙げられます。RDBMSがこのような処理を苦手とするのは、行指向データベースであるためです。行指向データベースは、表に格納された行を最小単位のデータとして扱います。列単位でデータを分析する際、行単位でデータを保持するRDBMSの場合、全ての行にアクセスしないと結果を得られないため非効率です。

DWHは列単位でデータを保持
DWHは列単位でデータを保持
列指向データベースと行指向データベースの考え方
[画像のクリックで拡大表示]

 一方、DWHは列単位でデータを保持します。そのため列単位でデータを処理する際に、無駄なく目的のデータにアクセスできます。このような特徴を持っていることから、DWHは列指向データベースと呼ぶこともあります。

 圧縮効率にも注目すべきです。行指向データベースであるRDBMSは1行が1つのデータであるため、その中に含まれるデータ型は文字列や数字、日付などさまざまです。一方、列指向データベースは1列が1つのデータ群であり、データ型はいずれも同じです。そのため、圧縮効率が高い列データにアクセスできるというメリットがあります。

 RDBMSとDWHはデータの扱い方が違うため、データモデルを最適化する方法も異なります。あくまでも一例ですが、RDBMSは正規化して表を分けることでデータ量を減らし、読み込みやデータ更新の処理効率を上げます。一方、DWHは一括データ更新と大量データ取り扱いを得意とするため、非正規化したほうが処理効率は良くなる場合があります。

DWHが苦手な処理

 DWHは一括でデータを書き込み、大量データを読み込んで扱うような処理を得意としています。一方で継続的な書き込みや更新などのオンライントランザクション処理は苦手です。DWHは分析用、RDBMSはオンライントランザクション用としてそれぞれが得意とする処理をするように、個別に構築すべきでしょう。

 分析用のデータベースとしてDWHを構築する場合、運用を始めるまでには多くの壁があります。DWHの構造は複雑であり構築は容易ではありません。RDBMSとは使い方が異なるためデータモデリングのようにDWHについての専門的な知識があるエンジニアを必要とします。

 さらに構築フェーズが長期になることも多く、その期間中もハードウエアやソフトウエアに費用がかかります。その分、コストが大きくなりやすいと言えます。DWHの特性上、ハードウエアは大規模なものとなり、それに伴いソフトウエアのライセンスも高額になるのが一般的です。DX(デジタルトランスフォーメーション)で試行を繰り返したくても、構築の難解さとコストの壁が大きく立ちはだかります。

 構築が完了して運用が始まると、データが蓄積され、処理で扱うデータ量も多くなります。すると徐々に処理パフォーマンスが劣化していきます。当然ですがDWHに蓄積されていくデータが崩れないように、データの保全や管理をするエンジニアも必要になります。処理データ量が増えると拡張しなければならない場合もありますが、オンプレミスの環境では容易に拡張や縮小はできません。

 これらの問題の解決策の1つがクラウドサービスであるRedshiftを利用することです。Redshiftを利用した場合、これらの問題がどのように解消されるのかを見ていきます。