Open2

アジャイルデータモデリング

たぬたぬ

第 1 章「データウェアハウスのモデリング方法」

1.1 OLTP vs DW/BI(OLAP)

以下の表は、本書の 3 ページに紹介してある表の一部抜粋と自分なりの解釈を加えたもの。

基準 OLTP(業務システム) DW/BI(分析システム)
目的 ビジネスプロセスの「実行」を支援 ビジネスプロセスの「評価」を支援
最適化の重点 更新の効率と書き込みの一貫性 クエリパフォーマンスと利便性
データ操作の種類 INSERT, SELECT, UPDATE, DELETE SELECT
データ操作の形式 事前に定義済み アドホック
更新頻度 リアルタイム(ビジネスイベントの発生時) 定期的(日次、月次など)
設計手法 ER モデリング(正規化) ディメンショナルモデリング
データモデル図 ER 図 スタースキーマ

データウェアハウスにおける ER モデリングの欠点

第 3 正規形はデータの取り込みを容易にする一方で、BI やデータウェアハウスにとっては大きなデメリットがあります。正規化によってテーブルや結合パスが増え、クエリ(SQL における SELECT)効率が悪くなり、正しいコードを書くのが難しくなります。(p.6)

第 3 正規形モデルは、ビジネス・ステークホルダーがレビューや品質保証(QA)を行うには複雑すぎるままなのです。(p.6)

これは痛いほどよく分かる 😇

思い返すと、業務システムと分析システムのデータ要件の違いを十分理解していなかった時期に手掛けたデータ分析基盤は、「とにかく業務データを入れて使ってもらうことが大事!」という考えが先行して、業務システムやレポートをそのままのデータ構造(第 3 正規形や JSON など)で BigQuery に流し込んでいただけだった。

この経験から学んだ最大の気づきは、「誰でも簡単に使える」 という視点の重要性だ。SQL や ER 図を理解できるユーザーは意外と少なく(私の経験では 10-20% 程度)、残りの 8 割以上のビジネスユーザーにとって使いやすい形にデータを整備することが、データ活用を推進するために最も重要である。

ER モデリングのクエリサンプル
-- 大カテゴリ名ごとに注文明細の合計を算出
select
    large_category.large_category_name,
    sum(order_item.item_price)
from order_item
left join product
    on order_item.product_id = product.product_id
left join small_category
    on product.small_category_cd = small_category.small_category_cd
left join large_category
    on small_category.large_category_cd = large_category.large_category_cd
left join product
    on order_item.product_id = product.product_id
group by 1
ディメンショナルモデリングのクエリサンプル
-- 大カテゴリ名ごとに注文明細の合計を算出
select
    dim_product.large_category_name,
    sum(fct_order.item_price)
from fct_order
left join dim_product using (product_key)
group by 1

スマートな BI ソフトウェアは、データベーススキーマの複雑さをセマンティックレイヤーで隠すことができますが、それは単に第 3 正規形を理解する負担を、クエリ時の BI ユーザーから設定時の BI 開発者に移しているだけです。(p.6)

自社のデータ分析基盤の変遷を振り返ると、まさにこの指摘が的確だと感じる。

当初、業務データをそのまま分析基盤に複製していた状態から脱却しようと、Looker のセマンティックレイヤーを導入してみた。確かにビジネスユーザーの負担は軽減されたものの、結果として開発者側で複雑な LookML の管理が必要になり、むしろ課題が深刻化していった。特に、データモデルの理解が特定の開発者に依存する形となり、新たな技術的負債を生んでしまった。

この経験から、データ分析基盤の真の価値は、ビジネスユーザーと開発者の双方にとってシンプルで理解しやすい設計にあること を学んだ。セマンティックレイヤーで複雑さを隠蔽するのではなく、本質的にシンプルなデータモデルを目指すことが、持続可能なデータ分析基盤の構築には不可欠だと実感している。

データウェアハウスにおけるディメンショナルモデリングの優位性

ディメンショナルモデルにおける利点の本質は「プロセス指向」であることです。(p.11)

最適なディメンショナルモデルは、どのビジネスプロセスを測定すべきか、という問いに対する回答にもなります。ディメンションとファクトに分かれたテーブルは、単なる非正規化データの集まりではなく、測定すべきビジネスイベントの詳細を記述する「7 W」となります。(p.11)

7W 説明 分類
Who 誰が(Who) 関与しているのか。 ディメンション
What 彼/彼女らは 何を(What) したのか。
何に(What) 対して行われたのか。
ディメンション
When それは いつ(When) 起こったのか。 ディメンション
Where どこで(Where) 行われたのか。 ディメンション
Why なぜ(Why) それが起こったのか。 ディメンション
HoW それは どのように(HoW) 起こったのか。 ディメンション
HoW many どれくらい(HoW many) 記録されたのか。 ファクト