人気ブログランキング | 話題のタグを見る
開発までの道のり
要件定義について

要件定義書は、どのようなシステムを構築するかを記したドキュメントです。
システムをどういうアーキテクチャにするか一つ一つ判断し決定するため、とても大事で難しいフェーズです。
クライアントと話し合いを重ねて、システムの全体を把握しなければなりません。

プロジェクトで要件定義が適切に行われていなかったために、数千万・数億円の赤字のプロジェクトになるなんてことも珍しくありませんので気をつけましょう。特にデータウェアハウスは大規模な案件が多く、技術屋さんのコストも高いので間違ったことをするとすぐ赤字になります。

以下に要件定義の中でも特に大事なプロセルについて紹介します。


ビジネス要件
ビジネス要件は、実際にユーザーがどういう形でどのような物が欲しいかという要求をまとめたものです。
ここを確定させておかないと、どのソースのどのデータを持ってくるかという判断ができなくなります。
アプリケーションが完成したあとでも、常にこのプロセスを行いビジネス要件が変化していないかどうかを常に確認しなければいけません。


ルールの定義

データ・ウェアハウス構築の要件を定義する際に最低限定義すべきルールは下記になります。
データソースとステージングのデータのバックアップをどうするか
すべてのトランザクションフローが完了した際の証拠を提示する
ファイル場所やアルゴリズムの仕様をドキュメント化する
オンライン・オフラインでコピーされるデータのセキュリティをどうするか


データプロファイリング

データプロファイルは、データのコンテンツ、構成、クオリティを見つけてあげる分析作業のことです。
ソースデータには何がどのようにどんな形で入っているか、NULLがあるのかないのか、データ型はなにか、インデックスはどこにつけるべきかなどなど知るべき情報はたくさんあります。
また、データに例外はないかどうかを把握しなければいけません。OLTPから入力されるデータにはほんとになんでそんなデータが入っているの?というのがよくあります。(例えば、年齢10000歳等)、データウェアハウスにそんなデータを入れても役に立ちませんのでとって上げる必要があります。

セキュリティ
・ロールベースの管理
ユーザー毎にGRANT・REVOKEを行うのではなく、ロール(アクセス権をまとめたもの)を各ユーザーにアサインすることで、管理しやくすくする。

・LDAPによるユーザー管理
ツリー構造でユーザーを管理して認証を行わせる仕組み。
MSのアクティブディレクトリなどでユーザー・パスワード・属性を管理し、既存の社内アプリケーションのユーザー認証を任せているので、データウェアハウスを構築する際にそれにあわせて作ってくださいという要望は多い。
LDAPについて(WIKI)

データ統合
データを統合してひとつのところで一括管理、そのシステムにアクセスすればすべての情報が入っている。というのがゴールです。あっちこっちに重複するデータがあったり、同じデータのはずが数字が違っていたりすると大変です。

データ遅延
どうしてもETLのスケジュールやロード処理に時間がかかるため、OLTPのデータみたくリアルタイムにデータを提供するのはほぼ不可能ですが、なるべくそれに近いスピードでエンドユーザーにデータを見せてあげる必要があります。ETLのアーキテクチャ・アルゴリズム・並列処理・ハードウェア等色々な角度から限りなくリアルタイムを目指せる設計にする必要があります。

ユーザーのインターフェイス

バックアップ
ステージングのDDL、データ自体、ETLのコード、ユーザーのセキュリティなど、もしもの時のために取れるものはすべてとっておく必要があります。水漏れでサーバーのデータがすべて飛んだなんてことあるはずない!って思っていても実際に身近なところでもすでに何度か起こっています。

チームのスキルセット
仕様によってどのようなプログラム言語やどのETLツール・データベースを使うかを選定しておかないとそれに合わせた人材をアサインするのが難しくなります。

ライセンス
とんでもなく高額になる可能性もあるので、ソフト選びは慎重に

アーキテクチャについて

プロジェクトの初期段階でアーキテクチャーを決定していくのは非常に難しくETLの高度な理解が必要になります。ここで判断ミスをしたまま、プロジェクトを進めていき「仕様変更」なんてことになったらもう大変です。すべての作業工程を洗い直し、インパクト分析をしてプログラムの修正・ユニットテスト等などリソースの作業時間とコストが大幅に増大してしまします。主に下記の項目などのPROS/CONSを熟考してから慎重に選定していきましょう。

・ETLツールを使った開発か自作ETLプログラム
・バッチ処理とストリーミングデータフロー、もしくはその両方
・独立型フロー(JOB1本1本が独立している)と依存型フロー(複数のJOBが依存しあっている)
・スケジューラによるオートメーション
・エラーハンドリング
・クオリティハンドリング
・リカバリと再起動
・メタデータ
・セキュリティ
by dhwnote | 2012-10-28 10:30 | ETL


<< データのいろいろな構造 ETLとは >>