ディメンショナル・モデリングの導入が分析業務を大きく変えた
さまざまな手法を探す過程で出会ったのが、「ディメンショナル・モデリング」だったという。
これは、データウェアハウスの特性に合わせたテーブル設計の手法だ。その手法は極めてシンプル。テーブルの種類を「ファクト」と「ディメンション」の2つに分け、ファクトテーブル1つにつき複数のディメンションを関連づけるだけである。ファクトテーブル同士やディメンションテーブル同士は結合しないルールになっている。
ファクトとは実際に発生したイベントや観測された事実を記録するためのテーブルだ。例えば、ゲームの分析においては各ユーザーのプレイログや課金ログなどがファクトに相当する。一方、ディメンションとはファクトに対する詳細情報を説明するテーブルだ。ゲームではプレイしたステージの情報や購入したアイテムの情報がそれにあたる。要するにマスタデータのことだ。
ファクトテーブル1つの周りに複数のディメンションが配置される星形のスキーマはスタースキーマと呼ばれ、ディメンショナル・モデリングではスタースキーマを中心にテーブルを組み立てていく。
ディメンショナル・モデリングには、以下の3つのメリットがある。
1つ目は「クエリのパフォーマンスが向上する」こと。スタースキーマの形にすることでテーブルのJOIN数が少なくて済むためだ。
2つ目は「分析軸を柔軟に追加できる」こと。イベントに関する属性情報がディメンションテーブルに分解されているおかげで、必要な分析軸を後から好きなだけディメンションテーブルに追加できる。ディメンションテーブルを充実させればさせるほど、データウェアハウスの表現力が上がり分析の柔軟性も向上するのがディメンショナル・モデリングの大きなメリットだ。
3つ目は「データを理解しやすい」こと。これは、ビジネスプロセスがテーブル設計に反映されていることに起因している。
例えば、モンストのステージ情報は、サーバサイドの実装上は正規化されたいくつかのテーブルに分解されている。だがモデリングをしていく過程において、ステージに関連するテーブルは非正規化され、ステージという1つのディメンションテーブルにまとめられる。
これにより、ステージの属性情報を知りたい場合は分割されたテーブルを一つひとつ調べる必要がなくなり、ステージのディメンションテーブルだけを用いれば事足りるようになる。
では、こうしたメリットを持つディメンショナル・モデリングを、どのようにしてモンストの分析基盤に取り入れていったのだろうか。
「導入を決めた時点では、データウェアハウスには数多くのテーブルがあり、それを利用している分析クエリも山のようにありました。いきなり全てのテーブルを設計し直して置き換えるのは無理があります。できるところから少しずつ進める方針にしました」
彼らはまず、KPIに直結するような重要なビジネスプロセスから優先的にモデリングしていった。DAUを集計するためにログインのイベントと、それにひも付くユーザー情報に関するディメンションテーブルを作った。
その次は、ゲームプレイに関するファクトテーブルとそれにひも付くステージ情報などのディメンションテーブル。さらにガチャプレイに関するファクトテーブルといった具合に、一つひとつビジネスプロセスを選んでモデリングを進めていった。
このプロセスは非常にうまくいったそうだが、その成功要因として「ビジネスプロセスを分析し、どれくらいの粒度でデータを扱うかを丁寧に決めたこと」が大きかったそうだ。モデリング推進の結果、分析環境は大きく改善した。
「まず、テーブルの構造が非常にシンプルになりました。今まではいくつものテーブルをJOINしたり複雑な関数を使ったりしてやっと分析できていたのが、簡単なSQLを書くだけになりました。ちゃんと計測したわけではないですが、体感ではクエリの長さは半分から3分の1程度になったと思います。エンジニア以外のメンバーでも、ある程度の分析ができるようになりました」
普段、なかなかオーソドックスなテーブル設計の技法が話題に上ることは少ない。だが、こうした技法を学び自社の環境に導入していくことで、日々の分析業務は劇的に改善する。そう総括し、生島氏はセッションを終えた。
お問い合わせ
株式会社ミクシィ