データはもはやビジネスにとって欠かせないものであり、その活用が企業の成長と革新を牽引しています。しかし、データを効果的に活用するには、それを適切に整理し、分析可能な形にすることが不可欠です。
この記事では、スタースキーマとはどのようなものか、また、どのように活用できるのかを解説します。さらに、スノーフレークスキーマにも触れながら、スタースキーマが持つメリットとデメリットを詳しく説明します。

スタースキーマとは

スタースキーマ(Star schema)は、データウェアハウス(DWH)やデータモデリングにおける一種のデータ構造を指します。

主に「ファクトテーブル」と「ディメンションテーブル」の二つで構成されています。販売データなどのファクトテーブルが中心にあり、それに関連する顧客データや商品データ、担当者データなどが周りに配置されているため、そのデータモデルの形が星形に見えることから名付けられています。

スタースキーマは、シンプルな構造と高いクエリ性能が特徴です。

ファクトテーブルとその周りのディメンションテーブルの二つという、シンプルな構造を持つため、直感的に理解しやすく、使いやすいです。DWHの基本的なデータモデリング手法として、広く使用されています。

また、スタースキーマでは、データの非正規化(複数の関連テーブルを1つのテーブルに結合したり冗長なデータを含めたりすること)を行います。これにより、DWHでのクエリ処理や集計を迅速に行えるため、ビッグデータの分析やその可視化に最適です。

スタースキーマの4つの特徴

 ファクトテーブル

ファクトテーブル(Fact Table)は、主要な数値データやビジネスプロセスなどが格納される、スタースキーマにおいて中心的なテーブルです。ディメンションテーブルとの関連性を活用し、データの集計やフィルタリング、グループ化などの操作を行います。以下のようなデータが、ファクトテーブルに格納される例です。

  • 為替レート
  • 気温売上データ
  • 注文データ
  • 在庫データ
  • 顧客行動データ

ファクトテーブルには、ディメンションテーブルに関連するディメンションキー列と、数値メジャー列が存在します。ディメンションキー列によって、ファクトテーブルの次元が決まり、数値メジャー列の値によってファクトテーブルの粒度が決まります。

ディメンションキー列はディメンションテーブルとの関連付けに使用され、データの階層構造や結合を行います。一方数値メジャー列は、ファクトテーブル内の数値的なデータを保持し、データの集計や分析を行うコンポーネントです。両者の組み合わせにより、DWH内のデータを詳細に分析できるようになるのです。

またファクトテーブルでは、データの重複を削減するために、データの正規化や集約テーブルの活用が行われています。これにより、データの冗長性を最小限に抑えられ、ビッグデータでも集計や分析クエリの実行が高速に行えます。

ディメンションテーブル

ディメンションテーブルは、スタースキーマの中心となるファクトテーブルに関連する詳細な情報を格納します。

ディメンションテーブルには、主キーと外部キーがあります。主キーは、テーブル内の各レコードを一意に識別するために使用される列です。テーブル内で重複する値を持つことはないため、データの一貫性や参照の完全性を保証するために用いられます。一方外部キーは、外部キーは、ファクトテーブル間の関係を定義し、データの整合性や参照の完全性を確保するために使用されます。

ディメンションテーブルに格納されるデータは、ビジネス上の要件や分析の目的に基づいて選択されます。DWHやデータマート内の特定の要素や事象を表す属性が含まれ、おもに、以下のようなデータが格納されます。

製品データ製品名、製品カテゴリ、製品価格など
顧客データ顧客ID、連絡先情報、住所など
時間データ日付、時間帯など

また、ディメンションテーブルは複数のファクトテーブルと関連付けられることがあります。これにより、ディメンションテーブルが共有され、複数の分析やクエリで再利用が可能になります。

シンプルなジョイン構造

ジョイン構造は、DWHなどにおいて、複数のテーブルやデータソースを結合し、関連性のあるデータを取得するための構造を指します。

スタースキーマは、主要な数値データを格納するファクトテーブルが中心にあり、その周りに関連したデータが格納されるディメンションテーブルが配置されます。このようなシンプルなジョイン構造により、クエリの作成が容易であったり、柔軟なデータ分析が可能であったりと、受けられる恩恵はさまざまです。

さらにシンプルなジョイン構造では、結合対象のテーブル数を削減できるため、結合処理のコストが低減されます。それにより、クエリの実行時間が短縮され、データベースのパフォーマンス向上が期待できます。

ジョイン構造がわかりやすいことで、データを見つける手間も省けるようになります。一般的なテーブルでは、データ量が大きくなるほど目的のデータを見つけるのに時間がかかってしまいます。しかし、スタースキーマのようにシンプルなジョイン構造であれば、目的のデータを容易に見つけられ、レポート作成を迅速に行えるのです。

パフォーマンス最適化

スタースキーマでは、DWH環境において、効率的なクエリ実行とデータアクセスの向上が実現できるよう、いくつかの工夫が施されています。

たとえば、インデックスはファクトテーブルとディメンションテーブルの結合列や検索条件に基づいて作成されます。これにより、データの検索や結合操作の効率化が図られるのです。

また、大容量のデータを複数の物理的なセグメントに分割する、パーティショニングと呼ばれる手法も用いられています。時間や地理などの属性に基づいてデータを分割することで、データの読み込みやクエリ処理の並列性を高められます。

一方、パーティショニングばかりして、データ量が増えているだけでは本末転倒です。ファクトテーブルやディメンションテーブルには詳細なデータも含まれますが、全てのクエリで詳細なデータを処理する必要はありません。そのためスタースキーマでは、データのサマリー化を行い、集計や集約レポートなどのクエリに対してサマリーレベルのデータを使用することで、クエリの実行速度を向上させられます。

これらの取り組みにより、スタースキーマのパフォーマンスは最適化され、効率的なクエリ実行やデータへの迅速なアクセスが可能になるのです。

スタースキーマとスノーフレークスキーマの違い

スノーフレークスキーマは、星形の構造であるスタースキーマに対し、雪の結晶のような構造をとることからその名がつけられています。

スノーフレークスキーマはその根本的構造はスタースキーマと類似しており、核となるファクトテーブルにディメンションテーブルの情報を結び、外側に放射状に広がっていく構造になっています。
ただし、スノーフレークスキーマの場合、ディメンションテーブル自体が、さらに複数のテーブルに分割されています。この構造が、雪の結晶に見られる枝分かれのようなパターンを作り出しているのです。

スタースキーマとスノーフレークスキーマの決定的な違いはその目的にあります。
スタースキーマは、クエリの実行や分析の高速化が目的であるため、データの非正規化を行います。
一方スノーフレークスキーマは、スタースキーマで非正規化されたデータを正規化することを目的としています。これにより、単純なDWHやOLAP(Online Analytical Processing)環境でも使用できるため、データに柔軟性を持たせられます。

スタースキーマは、クエリや分析の迅速な実行といったパフォーマンスの向上を求める代わりに、データの柔軟性に欠けます。一方スノーフレークスキーマは、正規化によりデータの柔軟性には富むが、データの処理速度は遅くなります。スタースキーマとスノーフレークスキーマは一長一短の特徴を持っているため、場合に応じて適切な構造を選択する必要があるでしょう。

スタースキーマの活用例3選

売上分析

データ量が多く、さまざまなビジネス要素が絡み合う売上分析はスタースキーマを効果的に活用できる代表例といってよいでしょう。

売上分析では、大量のデータを高速に処理することが求められるため、クエリの実行や分析の高速化が目的のスタースキーマは、最適なデータ構造といえます。

また売上には、商品データや顧客データ、地理的データなどさまざまな要素が関わるため、データ構造が複雑化しがちです。ところが、スタースキーマはファクトテーブルとディメンションテーブルという、単純な階層構造になっているため、売上に関連するビジネス要素を容易かつシンプルに結びつけられます。

さらに、ディメンションテーブルが関連データを詳細に記述しているため、多角的な分析が可能です。たとえば、

  • 時系列分析
  • 地理的分析
  • 顧客セグメンテーション
  • 商品のトレンド分析

など、売り上げデータをさまざまな観点から分析できます。

顧客データ管理

顧客データの管理も、売上分析と同様に、スタースキーマが適している事例の一つです。

顧客データ管理では、購買履歴などの詳細なデータに頻繁にアクセスするため、高速なクエリ処理は重要な要素です。スタースキーマでは、クエリの実行が最適化されているため、必要な顧客データへのアクセスが迅速に行えます。

また、ファクトテーブルにおいて顧客の購買データや行動データを管理しています。これにより、商品の購入履歴や住んでいる地域などの異なるソースからのデータを一元化し、顧客に関する包括的な情報を取得できます。

リスク管理

リスク管理も、高速なクエリ処理や複数の要素を考慮することが求められるため、スタースキーマを活用できる事例のひとつです。

 リスク管理では、リアルタイムまたは迅速なデータアクセスが非常に重視されます。スタースキーマのジョイン構造により、目的のデータへのアクセスが高速に行えるため、リスクの早期発見や迅速な対応が期待できます。

またリスク管理では、要因や発生頻度、影響度などのさまざまな要素を考慮する必要があります。そこで、スタースキーマを使用することで、それらの要素を包括的に管理できます。

さらに、複数の要素を包括的に管理することで、データを多次元的に分析できます。それにより、新しい観点を得られたり、今後の意思決定が迅速かつ正確に行えたりと、多くの恩恵を受けられるでしょう。

スタースキーマのメリット

クエリのパフォーマンスが向上する

クエリの実行速度の向上において、正規化されたスキーマがボトルネックとなっていました。しかしスタースキーマでは、そのスキーマを非正規化することで、クエリの実行や分析の高速化を実現したのです。

前述したとおり、スタースキーマではファクトテーブルとディメンションテーブルから構成されるシンプルな構造が、明確な階層構造になっています。この構造により、クエリの実行に必要となるデータへのアクセスが容易になったのです。

しかし、パフォーマンスの評価には、クエリの複雑性やハードウェアのスペックなど、さまざまな要素が影響します。最適なパフォーマンスの実現には、適切なインデックスの設計やクエリのチューニング、ハードウェアの最適化なども重要となるでしょう。

分析のハードルが高くない

スタースキーマは主要な数値データを格納するファクトテーブルと、それに関連する詳細なビジネス要素を記述するディメンションテーブルからなります。このようなシンプルで直感的なデータ構造により、データの関係性を理解しやすくなり、スムーズに分析を実行できるのです。

またスタースキーマは、データモデリングやクエリの作成を行うための、DAX(Data Analysis Expressions)が比較的書きやすいと言えます。DAXを使用する際にディメンションテーブルを利用して、セグメント化やフィルタリングを行えるためです。

これらの理由により、スタースキーマはデータ分析に慣れていない方でも、比較的容易に扱えるデータ構造だといえるでしょう。

拡張性と柔軟性がある

スタースキーマは、新たなディメンションテーブルの追加や、既存のテーブルの変更が容易です。したがって、新たな分析ニーズが生じた場合や、ビジネスの要件が変化した場合でも、データモデルを柔軟に拡張できます。

ディメンションテーブルには、ファクトテーブルの情報に関連したさまざまなビジネス要素が記述されています。そのため、これらの要素に基づいてデータをセグメント化したり、フィルタリングしたりすることで、多次元的なデータ分析が可能になります。

以上のような拡張性や柔軟性があることで、変化するビジネス環境に対応しながら分析を継続的に進められるのです。

スタースキーマのデメリット

データが冗長になる可能性がある

スタースキーマは、クエリの実行や分析の高速化を目的としているため、データの非正規化を行います。しかし非正規化されることで、ディメンションテーブルに同じデータが複数の場所に格納され、データが冗長になってしまう可能性があります。

データが冗長になると、データの整合性の維持は困難です。データの整合性を維持しようとしても、データの整合性を維持するために複数の場所のデータを更新する手間が生じてしまいます。

スタースキーマにおけるデータの冗長性は、クエリの実行や分析の高速化を実現するために生じてしまう特性です。そのため、データの冗長性を最小限にするには、適切なデータモデリングやデータ管理を工夫することが求められるでしょう。

ETLプロセスが複雑になる

一般に、スタースキーマにデータをロードするためのETL(Extract, Transform, Load)プロセスは、データのクレンジング、変換、集約が必要なため、複雑になりがちです。

せっかくクエリの実行や分析の高速化を実現するために、スタースキーマを活用しても、ETLプロセスで時間をかけてしまっては、本末転倒となるでしょう。

株式会社primeNumberが提供する分析基盤構築サービス「trocco®」は、複雑で時間のかかるETLプロセスを自動化できます。ほかにも、データクレンジングを手助けするデータチェック機能や、データを素早く見つけるためのデータカタログ機能なども提供しています。

データの分析基盤が構築できておらず、ETLパイプラインの運用保守や更新に不安を抱いている方は、フルマネージドサービスのtrocco®をぜひお試しください。

ストレージコストがかかる

データの非正規化によって、同じデータが複数の場所に格納されるため、データのストレージ使用量が増加する可能性があります。

特にビッグデータを扱う場合や、データの冗長性が高い場合には、ストレージの使用量が大幅に増加するでしょう。これにより、ストレージコストやデータ管理の負荷が増える可能性があります。

しかし、スタースキーマの設計において、データの冗長性を最小限に抑える工夫や正規化の一部を取り入れることも可能です。データの冗長性はデータの非正規化が主な原因であるため、正規化の一部を取り入れることで、ストレージコストを抑えられるでしょう。

一般に、データの冗長性によるストレージ使用量の増加は、データモデリングやDWHの設計段階で考慮すべき要素です。そのため、適切なデータ圧縮やストレージ管理の工夫などにより、ストレージ使用量を最適化しながらスタースキーマを活用することが重要だといえます。

まとめ

本記事では、スタースキーマの詳細な構造や、使用することのメリットとデメリット、また具体的な活用例について紹介しました。

スタースキーマはシンプルなデータ構造でありながら、パフォーマンス最適化により、クエリの実行や分析の高速化が期待できます。データ分析に慣れておらず、シンプルなデータ構造を扱いたい方や、ビッグデータなどの分析をより速くしたい方は、本記事の内容を参考にスタースキーマを導入してみてはいかがでしょうか。

また、先にも紹介したtrocco®はデータのETLを主な機能としてデータの運用を総合的に支援するサービスです。ETLプロセスを自動化できるだけでなく、データチェック機能やデータカタログ機能などにより、データ分析をより効果的なものにできます。

trocco®では、クレジットカード登録不要のフリープランを実施しています。複雑なETLプロセスに時間をかけたくない方や、データ分析をより効率的に進めたいと考えている方は、この機会にぜひお試しください。

trocco® ライター

trocco®ブログの記事ライター データマネジメント関連、trocco®の活用記事などを広めていきます!