I’m a lazy programmer! これは、先週の研修でRoelant Vos氏から学んだ重要な内容の一つです。 しかし、他にも興味深いトピックがたくさんありました。 データウェアハウスのデザインパターンに関する 3 日間のクラスの個人的な要約です。
先週、Roelant Vos 氏のクラス Data Warehouse Design Patterns に参加する機会がありました。 Roelant氏のブログには、Data WarehouseのアーキテクチャやData Vaultの実装に関する有益な情報がたくさん掲載されており、データモデリング学会での発表も拝見しています。 そこで、Trivadis の同僚から、彼がチューリッヒでトレーニングを行うという情報を得たとき、私はこの3日間のクラスに参加する機会を得ました。 しかし、次の行では、このトレーニングで私の観点から重要であった 3 つのトピックについて、いくつかのメモを紹介します。
典型的なデータウェアハウスアーキテクチャは、異なるソースシステムからビジネス情報をロード、統合、表示するための複数の層で構成されています。 層の数や名前はシステムごとに異なりますが、ほとんどの環境では、データは ETL ツールまたは純粋な SQL 文で 1 つの層から別の層へコピーされます。 優れたアーキテクチャでは、データを変換して特定のレイヤにロードするパターンが常に類似しています。 このため、データウェアハウス自動化(DWA)ツールで反復可能なパターンを生成できるため、ETLプロセスの開発が容易に(そして迅速に)なります。 Roelant氏のブログで、彼のData Integration Frameworkの概要を見ることができる。 コード例は GitHub で公開されています。
なぜ私は怠け者のプログラマーなのでしょうか? 他の多くの開発者と同様に、私は反復的なコードを書くのが好きではありません。 Roelant も怠け者のプログラマーです。 そのため、彼はデータウェアハウスを構築しロードするためのSQLコードを生成して、開発作業をスピードアップするためのツールやメソッドを開発するために多くの時間を費やしたのです。 コースでは、SQLジェネレーターVDW(Virtual Data Warehouse)を使って、多くのデザインパターンを解説してくれました。 これは彼のウェブサイトから無料でダウンロードでき、迅速なプロトタイプやパターン変更の回帰テストに役立ちます。
Persistent Staging Area
提案アーキテクチャの重要な層は PSA (Persistant Staging Area)です。 ステージング層のこの領域はオプションですが、特にプロジェクト開始時にビジネス要件がまだ明確でない場合には、非常に実用的であり、強く推奨されます。 PSAはソースシステムからのデータの履歴アーカイブであり、従来の揮発性ステージングエリアに取って代わるものです。 PSAは、CDC(Change Data Capture)メカニズム、またはソースシステムとPSAの最新バージョン間のデルタ検出のどちらかでロードされます。 Persistent Staging Area は、Integration Layer の Data Vault テーブル (ハブ、リンク、サテライト) をロードするためのユニークなソースです。 元のデータはまだ PSA で利用可能であり、必要なときに再ロードできるので、将来の要件について気にする必要はありません。 私はこのアプローチをいくつかの顧客プロジェクトで見て、使用してきましたが、これは未知のビジネス要件に対する良い保険です。
Virtual Data Warehouse
Düsseldorf の Data Modeling Zone 2017 カンファレンスで Roelant Vos を初めて見たとき、私は彼が説明する興味深いアーキテクチャアプローチに非常に感銘を受けました。 データウェアハウスの永続化レイヤーはPSAのみであり、他のすべてはPSAのテーブルの上にビューで実装されています。 これは、RoelantのVDWソフトウェアでサポートされているVirtual Data Warehouseの一貫した実装です。 私はこれを理論やプレゼンテーションで見たことがありますが、実際のプロジェクトでは完全な形では見たことがありませんでした。 1. 1. データ ウェアハウスのすべてのレイヤーをリロードすることなく、変換ロジックを変更することが非常に簡単である。 2. 2. PSA 層に新しいデータがロードされるとすぐに、後続のすべての層でそのデータが表示されます。 3. 3. PSAは一種のスキーマオンリード型データウェアハウスであり、クエリー時にソースデータをどのように解釈するかを決定することができます。 しかし、クエリの性能にはまだ課題があります。 ほとんどの場合、少なくともよく使われるデータは永続化する必要があると思います。 しかし、ビューアプローチでは、たとえばマテリアライズドビューのように、それほど労力をかけずにこれを行うことができます。
3日間のコースは、私の期待以上のものでした。 正直なところ、Roelant氏が説明したことのほとんどはすでに知っていることでした)いくつかのコンセプトはすでに自分で使っていましたが、多くのコード例とライブデモを使ったデータウェアハウスアーキテクチャの段階的な構築は本当に良かったです。 コースの終わりに、自発的なフィードバックとして言ったように。 「楽しかったです」
。