リレーショナル vs.次元データベース、違いは何ですか?
質問
OLAP とデータ ウェアハウジングについて学ぼうとしていますが、リレーショナル モデリングとディメンション モデリングの違いについて混乱しています。ディメンション モデリングは基本的にリレーショナル モデリングですが、冗長データや正規化されていないデータは許容されますか?
たとえば、(製品、都市、売上 #) に関する過去の売上データがあるとします。次のような関係性の観点があると理解しています。
Product | City | # Sales Apples, San Francisco, 400 Apples, Boston, 700 Apples, Seattle, 600 Oranges, San Francisco, 550 Oranges, Boston, 500 Oranges, Seattle, 600
以下はより次元的な観点です。
Product | San Francisco | Boston | Seattle Apples, 400, 700, 600 Oranges, 550, 500, 600
しかし、それでも両方の観点が同一のスター スキーマで実装されるように思えます。
Fact table: Product ID, Region ID, # Sales Product dimension: Product ID, Product Name City dimension: City ID, City Name
そして、各次元に詳細を追加し始めるまで、違いが現れ始めます。たとえば、地域も追跡したい場合、すべてを正規化した状態に保つために、リレーショナル データベースには別の地域テーブルが必要になる傾向があります。
City dimension: City ID, City Name, Region ID Region dimension: Region ID, Region Name, Region Manager, # Regional Stores
次元データベースでは、データのスライスを容易にするために、地域データを都市次元内に保持する非正規化が可能になります。
City dimension: City ID, City Name, Region Name, Region Manager, # Regional Stores
これは正しいです?
解決
スター スキーマは、実際にはデータのリレーショナル モデルとデータの次元モデルの交差点にあります。これは実際には、ディメンション モデルから開始し、リレーショナル モデルから開始した場合に得られる SQL テーブルに似た SQL テーブルにそれをマッピングする方法です。
「やや似ている」と表現したのは、多くのリレーショナル設計手法が正規化された設計、または少なくとも正規化に近い設計になるためです。スター スキーマは、完全な正規化とは大きく異なります。
完全な正規化から離れるたびに、結果としてデータ更新の異常が発生します。(挿入、更新、削除操作に関する異常も 1 つの傘の下に含めています)。これらの異常は、どのデータ モデルを使用し始めたかとは何の関係もありません。
OLTP と OLAP に関するコメントがここに当てはまります。アップデートの異常は、これら 2 つの状況でパフォーマンスやプログラミングの難しさに異なる影響を与えます。
SQL データベースのスター スキーマに加えて、その製品に固有の物理形式でデータを格納するディメンション データベース製品もあります。これらの製品では、スター スキーマはあまり見られず、ディメンション モデルの直接実装と、製品に特有のインターフェイスが見られます。これらのインターフェイスの一部では、OLAP 操作を完全にポイント アンド クリックで行うことができます。
質問からの脱線になりますが、私はトランザクション ベースのアプリケーションをサポートする OLTP データベースと Cognos PowerPlay 内のデータキューブの間の中間ステップとしてスター スキーマを構築したことがあります。標準の ETL 技術を使用すると、OLTP データベースからスター スキーマへ、さらにスター スキーマからデータ キューブへの複合転送は、実際に OLTP データベースからデータキューブへの直接転送よりも優れたパフォーマンスを発揮しました。これは予想外の結果でした。
お役に立てれば。
他のヒント
簡単に言えば、OLTP 正規化データベースは、最適な「トランザクション」の観点で設計されています。データベースは、トランザクション システムに対して最適に動作するように正規化されています。私がトランザクション システムの最適化と言うとき、それは、削除、挿入、更新、選択などのすべてのトランザクション操作のバランスが取れ、いつでもすべての操作に同等または最適な重要性を与えるデータベース構造の設計状態に到達することを意味します。トランザクション システムではそれらは同等に評価されるためです。
そして、正規化されたシステムが提供するものは、データ更新の場合は最小限の更新、新しいエントリの場合は最小限の挿入、カテゴリの削除の場合は 1 か所の削除などです (例:新しい製品カテゴリ)...これはすべて、マスター テーブルを作成するブランチによって可能です....ただし、これには「選択」操作の遅延という犠牲が伴います...しかし、前述したように、その (正規化) モデルは最も効率的ではありません。すべての操作...その「最適」...とはいえ、インデックス作成などのデータフェッチ速度を向上させるための他の方法も用意されています。
一方、ディメンション モデル (主にデータ ウェア ハウスの設計に使用されます) は、データの選択という 1 種類の操作のみを重要視することを目的としており、データ ウェア ハウスと同様に、データの更新/挿入が定期的に行われます。 .そしてそれは一度限りの費用です。
したがって、任意の時点で選択のみが最も重要な操作になるように正規化されたデータ構造を微調整しようとすると、最終的には非正規化された (部分的に非正規化されたと言えるでしょう) 次元のスター構造が得られることになります。
- すべての外部鍵は1つの場所です-Dimension to Dimension結合(つまり、マスターからマスターテーブルへの結合)..スノーフレークは同じディメンションを表します
- 理想的に設計されたファクトは数値のみを保持します...メジャーまたは外部キー
- ディメンションは説明と集計不可能な情報を伝えるために使用されます
- データの冗長性は無視されます ...しかし、まれに、ディメンション自体が大きくなりすぎる場合、スノーフレーク デザインがオプションと見なされます..しかし、それでも回避可能です
詳細については、このトピックに関する詳細な書籍を参照してください。
エンタープライズ データ ウェアハウス (EDW) を保管している私のビジネスでは主にリレーショナル モデルを使用しているため、ディメンション データ モデリングとリレーショナル データ モデリングの違いについて最近読んだところです。
Steve Hoberman 氏の著書「Data Modeling Made Simple」によれば、2 種類のモデルの違いは次のとおりです。
- リレーショナル データ モデルは、ビジネスの一部がどのように機能するかに関するビジネス ソリューション、別名ビジネス プロセスをキャプチャします。
- 次元データ モデルは、ビジネスがどの程度うまくいっているのかに関する質問に答えるために必要な詳細をキャプチャします。
リレーショナル モデルは、戦術レベルではあるものの、ビジネス上の質問に答えるための基盤としても使用できると主張できます。「クレジット保有により、顧客Xのために満たされていない状態でいくつの注文がありますか?」しかし、区別は、報告の質問がテーブルの「ネイティブ粒」を必要とする場所と、要約されたデータで報告の質問に答えることができる場所です。
上記の 2 つの例では、2 つのテーブルのどちらも販売注文を「ネイティブ粒度」で保存していないため、販売注文を作成するビジネス プロセスをキャプチャしていないため、実際には両方とも次元データ モデリングの例です。2 つのテーブルの唯一の違いは、2 番目のテーブルでは都市のディメンションがファクト テーブルに置き換えられていることです。
で見つけた説明を見つけました http://www.orafaq.com/node/2286 リレーショナルの観点からスター スキーマを理解するときに非常に役立ちます。
完全に正規化されたデータ モデルを考えてみましょう。ここで、まったく逆のことを考えてみましょう。リレーショナル データ モデルを完全に非正規化して、非常に幅の広い行を持つ大きなスプレッドシートのようなフラット レコードを 1 つだけ持つようにします。ここで、このフラット レコードから少しだけ戻って、深さ 2 レベルだけのデータ モデルを作成します。1 つの大きなテーブルと、その大きなテーブルが指すいくつかの小さなテーブル。これはSTARスキーマです。したがって、真のスター データ モデルには 2 つの属性があり、深さは常に 2 レベルであり、真のスター モデルには常にモデルの焦点である大きなテーブルが 1 つだけ含まれます。