1

最近、私は答えを探して、いくつかの疑問を持っています。

通常、データウェアハウスを設計するときは、スターモデル、スノーフレークモデル、またはハイブリッドのいずれかを使用し、通常、マスターデータをディメンションテーブルに正規化します(パフォーマンスを考慮して、非正規化することもあります)。私の質問は、ディメンションテーブルに正規化するか、あらゆる種類の異なるディメンションテーブルを作成することですが、どのようなメリットがありますか?

スペースを節約する場合は、SQLServerの異なるレベルの圧縮ですでにスペースが節約されます。 たとえば、ファクトテーブルには、一意の値の1%しかないvarchar(max)列があり、それをディメンションテーブルに正規化し、キーをファクトテーブルに配置すると、スペースの節約に役立ちます。ただし、SQL行レベルの圧縮により、理論的には同じように機能します。代わりに、独自の設計によって正規化されます。SQLServerは文字列パターンを見つけてどこかに保存します。行内はポインタのみであるため、スペースの使用量は理論的には次のようになります。鍵。

クエリのパフォーマンスを向上させるために、ディメンションテーブルを使用する場合は、ディメンションにどのインデックスがあるかに関係なく、少なくとも最初に非クラスターインデックススキャン/インデックスでディメンションテーブルを検索してキーを取得し、次にキーを使用してクラスターインデックスを取得する必要があります。またはRIDを実行してから、完全なデータを取得します。これはI/Oの2倍です。ディメンションがない場合でも、対応する列であるファクトテーブルにインデックスがあります。圧縮により、インデックステーブルは、ディメンションテーブルにインデックスを作成するのと同じサイズになります。したがって、クエリを実行する場合、おそらく1回限りの非クラスターインデックススキャン/クラスターインデックスシーク/その後の完全なデータであるため、I / Oはさらに小さくなり、結合がなければ、クエリのパフォーマンスはさらに速くなる可能性があります。 。

では、すでに圧縮が行われているのに、なぜディメンションが必要なのですか?

4

3 に答える 3

2

次元モデルは、データベースの物理設計に関するものだけではありません。「ビュー レイヤー」にスター スキーマを作成し、その下に 3NF テーブルを作成すると、パフォーマンスが向上することがわかった場合は、すばらしいことです。

スター スキーマとは、レポート作成者とエンド ユーザーが、さまざまな方法で集計および分析できる多くのソースからデータにアクセスできるようにすることです。「カテゴリ x の製品の売上が $10000 を超える顧客の請求書の平均遅延数」を示すレポートを作成する必要がある場合、正規化されたモデルでは、販売システムの各サブテーブルに移動する必要があります。その結果、10 ~ 50 の結合を持つクエリが生成されます。

私がレポート作成者で、何か違うことをしたいときは、これらすべての結合を覚えておく必要があります...さらに悪いことに、私は基本的な SQL を書いているビジネス ユーザーですが、最初の手がかりがありません。非常に多くの参加。

代わりに、データ内のビジネス関係を特定するという大変な作業が前もって行われ、請求書データとそれに関連する記述データを結び付けるファクト テーブルが構築されます。ここで、製品ファクトごとに顧客の総売上高をクエリし、結果の顧客セットを取得して、請求書ファクト (または事前に作成された集計) に結合して、遅れている請求書の平均数を取得します。おそらく 2 ~ 4 個のテーブル結合であり、レポート ライターにとってははるかに簡単です。

于 2013-03-16T16:49:20.057 に答える
1

圧縮と寸法を相関させている理由がわかりません。ウェアハウスの要点は、圧縮と正規化を忘れて、可能な限り高速にデータをフェッチするために必要なテーブル結合の数が最も少ないものをモデル化することです。

未来の家の 3D モデルがテーブルの上に置かれていると仮定してください。家についてもっと知るために、モデルをあらゆる角度から見たいと思うでしょう。同様に、可能なすべての角度からデータを表示できるように、ディメンションがあります。これは、ミッチが「スライスとダイシング」と言ったときに意味したものです.

ビジェイ。

于 2013-03-16T14:26:07.510 に答える
1

寸法値の変更を考慮する必要があります。

顧客の 1 人が結婚し、現在の婚姻状況でデータを検索する必要がある場合、次のことを行いますか?

  1. その顧客の 1 つのディメンション レコードを更新する、または ...
  2. その顧客のファクト テーブル内のすべての履歴レコードを更新しますか?

正規化の重要な原則の 1 つは、情報の各項目を 1 つの場所にのみ保存することであり、これはデータ ウェアハウスでも変わりません。

于 2013-03-18T13:45:07.123 に答える