5

典型的なエンティティリレーションシップOLTPデータベースモデルからキンボールスタースキーマデータウェアハウス/マーツモデルにデータをロードする際に採用される一般的な設計アプローチは何ですか?

  • ステージング領域を使用して変換を実行してから、倉庫にロードしますか?
  • ウェアハウスとOLTPデータベースの間でデータをどのようにリンクしますか?
  • 変換プロセスをどこで/どのように管理しますか?データベース内で、sprocs、dts / ssisパッケージ、またはアプリケーションコードからのSQLとして管理しますか?
4

5 に答える 5

9

個人的に、私は次のように働く傾向があります:

  1. 最初にデータウェアハウスを設計します。特に、ステージングテーブルを無視して、DWの一部として必要なテーブルを設計します。
  2. SSISを使用してETLを設計しますが、SSISが関連するデータベースのストアドプロシージャを呼び出す場合もあります。
  3. ETLの一部としてステージングテーブルが必要な場合は問題ありませんが、同時にそれらがクリーンアップされていることを確認してください。単一の一連のETLステップの一部としてのみ使用されるステージングテーブルは、成功の有無にかかわらず、それらのステップが完了した後に切り捨てられる必要があります。
  4. 少なくともステージングテーブルにデータをプルするために、SSISパッケージがOLTPデータベースを参照するようにしています。状況によっては、OLTPテーブルをデータウェアハウスに直接処理する場合があります。このようなクエリはすべてWITH(NOLOCK)で実行されます。
  5. ドキュメント、ドキュメント、ドキュメント。各パッケージで使用される入力と、出力の行き先を明確にします。入力が選択される基準を必ず文書化してください(過去24時間?最後の成功から?新しいID値?すべての行?)

これは私にとってはうまくいきましたが、私はこれらのプロジェクトの多くを行ったことがなく、実際に大きなプロジェクトも行っていないことを認めます。

于 2009-05-15T12:09:08.327 に答える
2

私は現在、中小規模のデータウェアハウスに取り組んでいます。キンボールが提唱するいくつかの概念、つまりファクトテーブルとディメンションテーブルを使用したスタースキームを採用しています。ファクトがディメンションにのみ結合するように構造化されているため(ファクトからファクトまたはディメンションからディメンションではありませんが、これは私たちの選択であり、それが行われるべき方法であるとは言えません)、すべてのディメンションの結合をファクトテーブルにフラット化します。

SSISを使用して、本番DB->ソースDB->ステージングDB->レポートDBからデータを移動します(使用するDBの数を減らすこともできたはずですが、それが問題になります)。

SSISを使用すると、データフローを非常に論理的に構造化できるため、非常に便利です。SSISコンポーネントとストアドプロシージャの組み合わせを使用します。SSISの優れた機能の1つは、ソース/宛先データフロー間の変換としてSQLコマンドを提供する機能です。これは、必要に応じてすべての行でストアドプロシージャを呼び出すことができることを意味します。これは、便利な場合があります(少し遅くなりますが)。

また、変更データキャプチャ(CDC)と呼ばれる新しいSQL Server 2008機能を使用しており、テーブルのすべての変更を監査できます(これらのテーブルで表示する列を指定できます)。本番DBは、何が変更されたかを通知するため、これらのレコードだけをソースDBに移動して処理できます。

于 2009-05-15T15:09:27.660 に答える
2

私は高評価の回答に同意しますが、次のように追加すると思いました。

* Do you use a staging area to perform the transformation and then

倉庫に積み込みますか?

ステージングが必要かどうかは、変換のタイプによって異なります。ステージングには、ETLをより管理しやすいチャンクに分割するという利点がありますが、ウェアハウスに影響を与えることなくデータに対して操作を実行できる作業領域も提供されます。ファクトレコードをロードするときにルックアップとして使用するために、OLTPシステムからのキーと最新のdimレコードのキーを格納するステージング領域に(少なくとも)いくつかのディメンションルックアップを含めると役立ちます。変換はETLプロセス自体で発生しますが、途中でそれを支援するためにステージングが必要な場合と必要でない場合があります。

* How do you link data between the warehouse and the OLTP database?

OLTPシステムへの参照として、ビジネスキー(または使用可能な場合は実際の主キー)をデータウェアハウスにロードすると便利です。また、DWプロセスでの監査では、データをロードしたロードプロセスを記録することにより、データの各ビットの系統を記録する必要があります。

* Where/How do you manage the transformation process - in the

sprocs、dts / ssisパッケージ、またはアプリケーションコードからのSQLとしてのデータベース?

これは通常、SSISパッケージに含まれますが、多くの場合、ソースクエリで変換する方がパフォーマンスが高くなります。残念ながら、これによりソースクエリの理解と維持が非常に複雑になるため、パフォーマンスが問題にならない場合は、SSISコードで変換するのが最適です。これを行うと、これがステージング領域を持つもう1つの理由になります。これにより、異なるテーブル間のソースクエリでより多くの結合を行うことができます。

于 2010-08-02T16:09:43.547 に答える
1

JohnSaundersのプロセスの説明は良いです。

SQL ServerにDatawarehouseプロジェクトを実装する場合は、プロジェクト全体を配信するために必要なすべての情報が、優れたテキスト「MicrosoftDataWarehouseToolkit」に含まれています。

おかしなことに、作者の1人はラルフキンボールです:-)

于 2009-05-15T14:34:19.227 に答える
0

DataVaultModelingを確認することをお勧めします。それは、属性の変更のようないくつかの孤独な用語の問題を解決すると主張しています。

于 2010-06-16T08:19:09.510 に答える