3

ありがとう:ここでの両方の答えは非常に役に立ちますが、私は1つしか選ぶことができませんでした。アドバイスありがとうございます!

当社のデータウェアハウスは、従来の分析レポートよりもワークフローレポートに多く使用されます。私たちのユーザーは、歴史よりもはるかに「現在の写真」に関心を持っています。(歴史も重要ですが。)私たちは、費用や関連する計算を持たない政府機関です。ほとんどの場合、特定の場所にあり、関連する履歴を持つ人の数だけです。

私たちはOracleを使用していますが、可能な限りスター結合を使用することには明確な利点があり、ビジネスでの使用に適したスタースキーマにできるだけ類似するようにすべてを再設計したいと思います。このDWの速度は非常に重要であり、多くのテストでスタースキーマアプローチがすでに証明されています。

私たちの「人」テーブルが重要です。これには400万を超えるレコードが含まれており、クエリで最も頻繁に使用されるソースになります。 それは、複数の次元(年齢、性別、所属、場所など)を持つ星の中心に見ることができます。これは非常に長いテーブルであり、特にアドレスと連絡先情報に結合すると非常に長くなります。

ただし、履歴を見始めると、ディメンションテーブルのようなものになります。たとえば、人物テーブルを指す人物キーを持つ2つの異なる履歴テーブルがあります。1つは2000万を超えるレコードを持ち、もう1つはほぼ5000万を持ち、毎日成長しています。

このテーブルはファクトテーブルですか、それともディメンションテーブルですか。1つは両方として機能できますか?もしそうなら、それは大きなパフォーマンスの問題になるのでしょうか?ファクトよりもディメンションから多くのクエリを実行するのが一般的ですか?個人テーブルをディメンションとして使用するDIFFERENTファクトテーブルが実際には60,000レコード(はるかに小さい)しかない場合はどうなりますか。

私の問題は、私たちのデータとその使用が、スタースキーマの一般的に使用される例に適合しないことだと思います。

明確化: いくつかの良い考えが以下に追加されていますが、おそらく私はあまりにも多くを省略して、本当にうまく説明することができませんでした。ここにいくつかのより多くの情報があります:

有権者データベースを取り扱っています。さまざまなグループによる投票者数以外の測定値はありません。党別、年齢別、場所別の投票者数。投票者は、投票の種類と選挙、投票のステータスと選挙などによってカウントされます。「投票履歴」ログと活動監査ログ(住所、政党などの変更)があります。どの有権者が選挙労働者であるかに関する情報と、それに関連するすべての情報があります。後で周辺機器にたどり着くと思います。

今のところ、私は2つの主要な「ビジネスプロセス」に焦点を当てています。それは、投票者登録(投票者です)と投票率です。第一に、有権者は事実です。第二に、有権者は、党、選挙、投票用紙の種類とともに、次元です。(そして誰かが心配している場合に備えて-いいえ、私たちは人々がどのように投票するかわかりません。彼らが投票するだけです。LOL)

それが少し明確になることを願っています。

4

3 に答える 3

1

わかりました-これは完全な「答え」ではありませんが、近いです。

Kimball の講義について説明している次のブログ エントリに注目してください: http://database-geek.com/2005/03/28/a-day-with-ralph-kimball-part-2/

私が苦労している理由は、これが「退化した」次元だからです。私の有権者レグナムと関連情報は、「登録」ファクト テーブルと 1 対 1 です。したがって、Kimball がそれをファクト テーブルに入れても問題ないようです。

そのため、ファクト テーブルが別のファクト テーブルで使用されるとどうなるかを調べています。

編集:また、「モンスターディメンション」という用語をグーグルで検索すると非常に役立つことがわかりました. これは、ゆっくりと変化する顧客の次元によく似ています。私がスノーフレークを喜んでいる限り、私は必要なことを達成することができます - 投票者を照会するときのスター結合、そしてさまざまなファクトテーブルのディメンションとして投票者を使用する問題を引き起こさない.

EDIT:これが私の最終的な結論でした:上記のアドバイスのように、ポイントはビジネスプロセスを促進することであり、教科書の図に適合することではありません。

私たちのビジネスでは、voter テーブル (「登録」用のファクト テーブルと「投票者」用のディメンション) を分割する理由はまったくありません。そのテーブルでクエリを実行すると、すべての属性とすべての属性が必要になりますフラグとテキスト情報。属性を個別に「事実」に分解したくはありません (顧客と注文に関するキンボールの本のショーのように)。これらの属性は、ディメンションに関連付けられている場合と事実に関連付けられている場合では異なる意味を持つためです。さらに、有権者は他の複数の場所で属性として使用され、そのうちのいくつかは伝統的な星に適合します。

私の主な目的はSPEEDです。そのため、スノーフレークによく似た修正された形式を選択しました。投票者は複数のテーブルの中心であり、すべてに正しいインデックスを付けると、オラクルはスター結合を使用できます。次に、投票者を他のすべての「星」の次元として使用します。すべての場合で、すべてではないにしてもほとんどのテーブルをスター結合を使用して結合できるように設定しましたが、それは「教科書」ではありません。

助けてくれてありがとう!

于 2009-10-28T20:48:24.393 に答える
1

大きな「人」(顧客) の次元は、通信、銀行、保険などでよく見られます。Kimball は、CRM の章 (6) の下に「大きく変化する顧客の次元」というセクションを持っています。「ミニディメンション」を作成する方法を示します。頻繁に変更または頻繁に分析される属性 (列) は、個別のミニ ディメンション テーブルに分割されます。これらのミニ ディメンションはファクト テーブルを介して接続されるため、ファクト テーブルにはこれらのテーブルごとに個別の FK があります。

あなたの例はこれに近いように思えます。

原則として、ディメンション テーブルはめったに変化しないオブジェクト (人、アカウント、時間、製品、店舗) のルックアップ テーブルであり、ファクト テーブルはこれらのオブジェクト間の相互作用のアクティビティ (履歴) をキャプチャします。ファクト テーブルには、集計するメジャーが含まれています (総売上高、作業時間数、生産された部品数など)。

明確化後:
Voter は実際には準拠したディメンションであり、すべてのデータ マート (ビジネス プロセス) に共通であると言えます。その他の適合ディメンションは、日付、党、選挙、投票所です。ミニ ディメンションは、人口統計と地域です。ファクト テーブルは、RegistrationEvent (誰が、いつ、どこで登録したか) と ElectionEvent (誰が、いつ、どこで、どの選挙で、何を使用して投票したか) になります。
Dimension Voter と fact RegistrationEvent は、有権者の登録やその他の変更を取得する運用システムから読み込まれます。
これは単純化されていますが、基本的な考え方を捉えていることを願っています。

于 2009-10-28T17:03:06.600 に答える
1

可能であれば、これらのテーブルをリファクタリングして、真のスター スキーマとより一致するようにすることをお勧めします。5,000 万件のレコードは (トランザクション システムについて考えると) 多いように思えますが、5 億行もの複数のファクト テーブルがあります。ハードウェアがこの種の作業用に仕様されていると仮定すると、テーブルを 1 つの大きなファクト テーブルに結合することに問題はありません (それらがすべて同じサブジェクト エリア内にあると仮定します)。

そうは言っても、高度に非正規化された構造を選択するときに考慮すべき他の要因を考慮してください。スター スキーマは、必要な結合が減るため、データのレポート作成に最適な設計ですが、テーブルの更新中やディスク領域の使用に多額の費用がかかることがよくあります。このスキーマを主に分析ではなくワークフロー アプリケーションに使用することを検討しているという場合は、更新について説明します。更新はリアルタイムまたはほぼリアルタイムで必要ですか? もしそうなら、再びあなたは星を考慮したくないかもしれません.

最後に、場合によっては、ディメンション テーブルのみをクエリします。多くの場合、アプリケーションが特定の項目 (つまり、製品、顧客など) のリストを必要とする場合、これは有効な使用法ですが、より良いソリューションでは、私たちのスタースキーマ。

私が見つけたのは、自分のスキーマを Inmon や Kimball の教科書のようなものにしようとしても、実際のカスタマイズなしではほとんど機能しないということです。

編集 ODSへの参照により、より具体的になりました。

オペレーショナル データ ストア (または「ODS」) は、複数のソースからのデータを統合して、分析とレポート作成を容易にするように設計されたデータベースです。データは複数のソースに由来するため、統合には多くの場合、クリーンアップ、冗長性の解決、整合性のビジネス ルールに対するチェックが含まれます。通常、ODS は低レベルまたはアトミック (分割不可能) データ (トランザクションや価格など) を含むように設計されており、その履歴は、「リアルタイム」または「ほぼリアルタイム」でキャプチャされます。通常、データ ウェアハウスはそれほど頻繁ではありません。

この概念の創始者である Bill Inmon によると、ODS は「組織の最新の運用上の必要性をサポートする、主題指向で、統合された、不安定で、現在価値のある、詳細なデータのみのコレクションです。 、統合された集合的な情報。」

ODS は、履歴が限定され、EDW より頻繁に更新されるという点で、Inmon のエンタープライズ データ ウェアハウスの定義とは異なります。実際には、ODS は、実装を高速化し、本番データのより正確な表現を提供するために、ソース構造をより反映する傾向があります。

http://en.wikipedia.org/wiki/Operational_data_store

于 2009-10-28T16:25:24.693 に答える