現在、データウェアハウスアーキテクチャを設計しています。本番環境からデータを抽出してデータウェアハウスに配置するためのさまざまなオプションを検討しているときに、主に次の2つのアプローチを提案する多くの記事に出くわしました-
- 本番DB ---->データウェアハウス(スタースキーマ)----> OLAPキューブ
- 本番DB ----> Staging Database ----> Data Warehouse(Star Schema)----> OLAP Cube
パフォーマンスと運用データベースの処理負荷の削減の観点から、どちらがより良いアプローチかはまだわかりません。
データウェアハウスを設計するときに、どちらのアプローチが適切かを検討してください。
以下のポイントは、 DWBI Organization's の記事から引用しています。
次のいずれかのシナリオがある場合は、ステージング領域が必要になることがあります。
パフォーマンスと処理の減少だけが考慮事項ではありません。ステージングを追加すると、latency
が増加する場合があります(つまり、ビジネスインシデントの発生とその報告の間の時間遅延)。しかし、私は上記の点があなたがより良い判断をするのに役立つことを願っています。
ETL = Extract、Transform、およびLoad。変換ビットを使用したステージングデータベースのヘルプ。個人的には、常にステージングDBとETLステップを含めます。
ステージングデータベースは、ソースデータをデータウェアハウスのFACTおよびDIMENSIONの宛先と同等の構造にするのに役立ちます。また、ウェアハウスとウェアハウスETLプロセスをソースデータから分離します。
データウェアハウスの宛先テーブルが、いくつかの追加のディメンションフィールドのみを使用して実稼働DBテーブルをほぼマップしている場合、ステージングデータベースを無視してできます。これにより、開発時間を少し節約できます。あなたとしてこれをお勧めしません:
おそらく、何らかのデータ操作(日付をDATE_DIMキーに変換し、値を集計する)を実行することになりますが、その場合、ステージングDBは、変換ロジックと計算をデータウェアハウスの操作(データのディメンション化)から分離するのに役立ちます。
この種のパターンにも遭遇した可能性があります。
[PROD DB] -(ETL)-> [RAW DB] -(ETL)-> [STAGING DB] -(ETL)-> [DW DB] -(ETL)-> [DM DB]
パフォーマンスの考慮事項が重要な場合は、確認する必要があります。あなたの場合、RAW_DBは本番データベースの正確な1:1コピーであり、それを作成するETLステップは、最新の夜間バックアップからDBを再作成するだけの場合があります。 (従来、RAW_DBは、各フィールドを純粋なテキストとしてさまざまな外部ソースからデータを取得するために使用されていました。これらのフィールドは、予期されるデータ型に変換され、例外が発生したときに処理されます。これは、1つのソースとそのニースの強く型付けされた正規化データベース)
このRAW_DBから、次のETLプロセスは、ステージングを切り捨てて、ステージングにデータを入力します。これにより、STAGING DBには、ウェアハウスに送られるすべての新規/更新済みレコードが含まれます。
これらすべてのステップのもう1つの追加の利点は、特定の実行について、各差分データベース内のレコード値を確認し、どのETLプロセスが悲しみをもたらしているかを特定できるため、奇妙なデータのデバッグに本当に役立つことです。
中間のステージングデータベースを使用することには、いくつかの潜在的な利点があります。すべてのソリューションに対応できる完璧なサイズはありません。潜在的な利点には次のものがあります。
あなたにとって重要かもしれないし、重要ではないかもしれない不利な点もあります。これらの主なものは、別のデータベースサーバーを持っている必要があります。同じサーバーを使用して本番データベースやデータウェアハウスデータベースをホストしている場合、多くの利点が無意味になる可能性があります。
ステージングエリアは、その場で処理できれば必要ありません。しかし、私たちはできますか?ステージングエリアを回避できない理由はいくつかあります。1.ソースシステムは、通常、データの読み込み時間全体よりも短い特定のタイムスロットでのみ抽出できます。ソースシステムへの接続が失われる前に、物事を抽出して保持することをお勧めします。 2. 2つ以上の異なるシステムを結合する必要があるいくつかの条件に基づいてデータを抽出したい。例えば。他のシステムにも存在する顧客のみを抽出したい場合。 2つの物理的に異なるデータベースの2つのテーブルを結合するSQLクエリを実行することはできません。 3.さまざまなソースシステムでは、データ抽出に割り当てられたタイミングが異なります。 4.データウェアハウスのデータ読み込み頻度がソースシステムの更新頻度と一致しない5.同じソースシステムのセットから抽出されたデータが複数の場所(データウェアハウス読み込み、ODSロード、サードパーティアプリケーションなど)で使用される。)6. ETLプロセスには、データを一時的にステージングするために追加のスペースを必要とする複雑なデータ変換が含まれます。
明らかにステージング領域は、データのロード中に多くの柔軟性を提供します。それなら、別のステージングエリアを常に持つ必要はありませんか?ステージエリアを設けることによる影響はありますか?はい、いくつかあります。 1.ステージング領域はレイテンシを増加させます。これは、ソースシステムの変更がデータウェアハウスで有効になるために必要な時間です。多くのリアルタイム/ほぼリアルタイムのアプリケーションでは、ステージング領域はかなり避けられます。ステージング領域のデータは余分なスペースを占有します。2。実際には、ステージング領域があることの利点は、問題よりも重要です。したがって、一般的には、データウェアハウジングプロジェクトで特定のステージング領域を指定することをお勧めします。