今回はマスタ系データモデルにおいて時間軸をどのように扱えば良いのかについてお話したい。バックナンバーでも何度か触れているが、我々が実社会をシステムに落とし込む際に最も苦手なのが、この時間軸(四次元目)である。企業システムのマスタモデルを設計する際に度々ぶつかるのが、マスタデータの有効開始日、失効日に関する物理設計の課題である。論理設計の段階では、この課題に触れることが少ないので、いわゆる教科書ではあまりお目にかからない。この課題は大規模企業システムにおけるマスタデータ管理の“実運用”を意識した際に、初めて発生するといえる。
具体的にはこうだ。通常は“今”をベースとしたリアルタイム・システムでは、取引先や品目などの最新のレコードのみが存在すれば事足りる。しかし、今より過去を扱うバッチ・システムや、予期される将来を取扱う計画系システムでも、マスタデータを何らかの形で活用する必要が発生してくる。余談であるが、RDB登場以前のレガシーシステムでは、前月、当月、翌月を管理出来るように、3面のデータ環境を使い分けるような工夫をしたこともあった。
さて本ブログでは、この課題を解決する物理モデルのいくつかのパターンについて、その長所、短所を交えてご紹介したい。いつもの事ながら、モデルには1つの正解しかないという事はなく、状況によって使い分けることが懸命である。図1に4パターンの実現手段を掲載したのでご覧いただきたい。これらのパターンはともにマスタデータを一元管理するMDMシステム上での実装を意識したものである。図中のXXXマスタ、XXXコードのXXXには“品目”、“取引先“、”社内組織“など、主要なリソースが該当すると思っていただきたい。
まずこれらは、そもそもA.ゴールデンRECに時間軸を持ち込まないケースと、B.ゴールデンRECに時間軸を持ち込むケースに大別される。ちなみに前者にはパターン①②が、後者にはパターン③④が属する。ゴールデンRECの意味については、バックナンバー2014.12.18「ゴールデンレコード」に記載した通りだが、”時間軸を取り込まない/取り込む”は、どちらが正解とも言い難い。シンプルなのは(時間軸=現在を)暗黙知としてゴールデンRECに取り込まない前者であるが、マスタによっては過去日付や未来日付を扱う必要があるものもあり、その場合には後者となる。
図1の右側に各パターンでのゴールデンRECの位置付けと、ゴールデンREC更新処理概要を記したので、それぞれの特徴を読み取っていただきたい。また、各パターンの短所について※以下に記述したので参考にされたい。これら4パターンはそれぞれ一長一短があるので、自社の各マスタの特性に応じて選択することを推奨したい。なお、ケースAでの①より②、ケースBでの③より④がそれぞれ処理は複雑になるので、当然ながらトータル開発工数が膨らむことを考慮しなければならない。さらに補足説明をすれば、パターン②は①に対して、未来のマスタを事前に活用できるように拡張したもの。パターン④は③に対して、P-KEYのXXXコード発番を防ぎ過去、現在、未来への対応を最もフレキシブルにしたものという説明になる。
どうであろうか、マスタデータへの時間軸の持ち方だけでも、物理実装レベルではこのように様々な解があり得る。三次元から四次元に足を踏み入れただけでディープな世界が広がってくる。モデリングの世界はまだまだ未知の課題が潜んでいるようだ。