SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine編集部ではイベントを随時開催しております

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

変化する情報活用ニーズ、進化しないデータウェアハウス

データウェアハウス構築の秘訣(1)

第3回

時系列データの蓄積とスキーマ

 前回、「時系列に蓄積するとは?」および「どんなスキーマが適しているのか?」という見出しで書いた疑問に関しまして、この項で私の考えを述べさせていただこうと思います。

時系列データの3通りの見方

 マスタデータのすべての変更履歴が蓄積されているとしたら、データはどのように見ることができるのか、このことを商品マスタの属性である「商品分類」を例にとって考えてみようと思います。

 たとえば商品の一つである『紙コップ』の分類が、時間の経過とともに「雑貨」→「紙容器」→「食器」と変化し、現在は「食器」として分類・集計されているとします。現時点において過去の一定期間を集計する場合、どのような集計が可能でしょうか。

時間経過による『紙コップ』の分類の変化
時間経過による紙コップの分類の変化

 集計の仕方としては、次の3通りが考えられます。

  1. 現在の分類「食器」で集計する。
  2. 集計期間の終点の分類「紙容器」で集計する。
  3. 「雑貨」の期間は雑貨として集計し、「紙容器」の期間は紙容器として集計する。

 この3通りの集計の仕方をデータの見方として書き直すと、各集計方法は次のように表現できます。

  1. 現在(最新)のマスタの属性値でトランザクションデータを見る。
  2. 過去のある時点のマスタの属性値でトランザクションデータを見る。
  3. 発生時点のマスタの属性値でトランザクションデータを見る。

 つまり、時系列データには、この3通りの見方があるということです。

時系列データの見方とスキーマの関係

 時系列データの3通りの見方とスキーマの関係を考えてみようと思います。

 スキーマには、フラットスキーマ(大福帳)、第3正規形、ディメンジョナルモデル(スタースキーマ)、スノーフレークスキーマなど具体的な形はいろいろありますが、マスタデータの変更履歴を蓄積するという観点では大きく2つのグループに分類することができます。それは、マスタデータをトランザクションデータに埋め込むタイプと埋め込まないタイプであり、フラットスキーマは前者、それ以外は後者です。ここでは便宜的に、前者を「非正規型」、後者を「正規型」のスキーマと呼ぶことにします。

 非正規型スキーマは、トランザクション発生時点の属性値がトランザクションデータに埋め込まれているため、ある一時点のマスタの属性値を抜き出して集計対象のトランザクションデータに一律に適用することができません。つまり、③の見方はできますが、①と②の見方ができません。

 これに対して正規型スキーマは、非正規型とはまったく逆で、ある一時点のマスタデータの状況をトランザクションデータに一律に適用する形でデータ全体を見ますので、①と②の見方はできますが、③の見方ができません。

どちらのタイプを採用するか

 それでは、マスタデータの変更履歴を蓄積しようとする場合、正規型と非正規型のいずれのスキーマを採用すべきでしょうか。

 通常、業務系システムでデータを見るときは、①(現在を過去にシフトすれば②)の見方をしています。つまり、ある一時点(最新の時点)のマスタデータの状況をトランザクションデータに一律に適用する形でデータを見ているのです。したがって、もし過去の任意の時点で出力した内容とまったく同じデータをデータウェアハウスから取得する必要があるならば、正規型スキーマ(マスタデータはマスタデータとして独自に変更履歴を蓄積する)を採用すべきだということになります。

例外について

 しかし、これには例外があります。

 マスタデータの属性の中には、③の見方を要求されるものがあるのです。たとえば「単価」や「会員年代」といった属性で、これらは商品マスタや会員マスタの属性ですが、トランザクション発生時点の値を記録しなければならず、このために業務系システムでは必ずと言ってよいほどトランザクションデータに埋め込まれています。私はこのような属性を「結合型」の属性、それ以外を「分離型」の属性と呼んでいます。

 余談ですが、正規化を崩すことを非正規化といい、重複データ、導出データ、テーブル結合、水平分割などさまざまな手法があります。ではなぜ非正規化が必要かといえば、データへのアクセス方法を簡略化することで性能を向上させるのが目的です。しかし、リレーショナルデータモデルの特性上、必ず非正規化しなければならない属性があり、それが③の見方を要求される「結合型」の属性です。

 さて話を戻しますと、例外というのは、この結合型の属性です。これは業務系システムと同じようにデータウェアハウスにおいてもトランザクションデータに埋め込む必要があります。マスタデータの変更履歴を蓄積するならば、「単価」などの結合型の属性も独自に変更履歴を蓄積すれば同じことではないかと思われるかもしれませんが、そうではありません。独自に変更履歴を蓄積するということは、時系列データの3通りの見方の①と②の見方をするため、つまり一時点の状況が切り出されることが前提になっているのです。

 なお、独自に変更履歴を蓄積しつつ③の見方を可能にする方法として、代理キーを使用するという考え方がありますが、私は代理キー方式は結局はフラットスキーマを作成するのと同じことになるか、あるいはハイブリッドなスキーマになるため、導入には積極的ではありません。

次のページ
「恒常的」という特性について

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
変化する情報活用ニーズ、進化しないデータウェアハウス連載記事一覧

もっと読む

この記事の著者

サイベース 本庄 朗人(サイベース ホンジョウ アキヒト)

サイベース株式会社 プロフェッショナルサービス本部 担当部長。大手独立系SI企業を経てサイベース入社。90年代後半からデータウェアハウスの構築プロジェクトに従事、現在に至る。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/123 2007/09/03 13:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング