問題タブ [star-schema]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hbase - HBASE へのデータ ウェアハウス スター スキーマのマッピング
仮説として、データ ウェアハウス環境にスター スキーマがあるとします。1 つの非常に長いファクト テーブル (数十億から数兆行と考えてください) と、カーディナリティの低いディメンション テーブル (100 ディメンション テーブルと考えてください) がいくつかあります。ディメンション テーブルの主キーを指す各ファクト テーブルの外部キーには、ビットマップ インデックスが付けられます。各ディメンション テーブルの主キーにも、ビットマップ インデックスが作成されます。これは高速結合のすべてです。すべてかなり標準的です。
データ ウェアハウスのパフォーマンスが低下し始めているとします。ビットマップ結合から結果を返すのにかかる時間は、ファクト テーブルが長くなるほど悪化します。ビジネス要件は、ファクト テーブルが成長し続けることです (1 年以上前のデータをアーカイブ ストレージに移動することはできません)。
以下の解決策を考えています。
- ファクト テーブルをハッシュ パーティションしますが、これは避けられない増大の問題を一時的に回避するだけです。
- データベースは、物理的なスター スキーマ データベースを複数のスキーマ/データベースとして分割します。1..N ファクト テーブルとそのディメンション コピー。それぞれがハッシュ (1..N) 関数を介して割り当てられたデータを保持します。この関数は別の ETL ステージング データベースで実行され、どのデータベース/スキーマがファクト行 (ETL の結果) であるかを判断します。プロセス)に入ります。ディメンションが変更された場合は、ディメンションに対応する他のデータベースに変更を複製します。繰り返しますが、これは永続的な解決策としては機能しません。
- ディメンションを折りたたんで、すべてのディメンション値をファクト テーブルに直接保存します。次に、ファクト テーブルを Hadoop 上の HBASE にインポートします。ディメンション テーブルを持たない大規模な HBASE テーブル、キー値ストアを取得します。結合は HBASE では法外なコストがかかるため、これを行います (結合をディメンション化することは事実ではありません。ディメンション列にディメンション値を適用するだけです)。
誰もこれをやったことがありますか?
解決策#3のヒントはありますか?
高速読み取りでスケールアップする限り、HBASE ソリューションは最適ですか?
書き込みに関しては、バッチ処理として時間外に行われるため、高速書き込みは気にしません。
解決策 1 または 2 を選択した人がいる場合、一貫したハッシュ アルゴリズムを使用した人はいますか? 完全な再マップを行わずにパーティション数を動的に増加させることは、おそらくオプションではありません (パーティション化されたテーブルに関する限り、実際に行われたことはありません)。
多くの次元を持つ巨大なファクト テーブル (従来の DW スター スキーマ) を HBASE の巨大な次元のないテーブルに移動することに関する考え、アドバイス、経験はありますか?
関連する質問:
従来、マテリアライズド ビュー (または、最も詳細なファクト テーブルと同じディメンションにリンクされた別のファクト テーブルとして (または、ベース ファクト テーブルが時間単位である時間単位、日単位、週単位、月単位など) に存在するデータ コレクションをデータに集約する方法HBASE への倉庫マップ?
私の考えでは、HBASE にはマテリアライズド ビューがないため、集計データ コレクションは HBASE テーブルとして格納され、最も詳細で最低レベルのファクト テーブルに変更があった場合はいつでも更新/挿入されます。
HBASE の集計テーブルについて何か考えはありますか? Hive スクリプトを使用して、最も詳細なファクト テーブルへの変更時に、集計データが格納されているセカンダリ HBASE テーブル (つまり、daily_aggregates_fact_table、weekly_aggregates_fact_table、monthly_aggregates_fact_table) の集計列データを更新する際にマテリアライズド ビューの動作を本質的に模倣した人はいますか?
python - Python Cubes OLAP フレームワーク - 結合の操作方法は?
非常に単純なデータベースでPython の Olap フレームワークキューブを使用しようとしていますが、テーブルの結合に問題があります。
私のスキーマは次のようになります。
そして立方体モデル:
ここで、製品名、ユーザー名、購入日を表示して、すべての購入を表示したいと思います。これを行う方法が見つからないようです。ドキュメントは少し不足しています。
ありがとうございました
sql-server-2008 - ファクト テーブルのこれらの外部キーに非クラスター化インデックスを配置する必要がありますか
外部キーのプロファイル
すべての外部キーは、すでにクラスター化されたPrimary Key
. このファクト テーブルは、6 つのディメンションを含むスター スキーマの一部です (ID の 6、7、および 8 は同じ日付ディメンションを参照します)。
現在、ファクト テーブルには約 1800 行 (信じられないほど小さい) があり、毎月その量だけ増加すると予想されます。
結合を容易にするために、各外部キーに独自のクラスター化されていない非一意の単一列インデックスを設定する必要がありますか? もしそうなら、なぜですか?
各外部キーは、そのディメンション テーブルのクラスター化インデックス (主キー) の一部になります。
インデックスを外部キーに配置する必要がある場合、列のカーディナリティが低い場合、フィル ファクターとパディング インデックスをどのように設定する必要がありますか?
data-warehouse - 臓器提供のためのスタースキーマ設計
臓器提供者を追跡するための新しい次元モデル(スタースキーマ)を開始するのに助けが必要です。(性別、人種、年齢、死亡日)などの情報と関連するルックアップテーブル(日付、時刻、人種、病院、臓器の種類、提供された臓器など)を含む紹介テーブル(死亡の用語)を含むOLTPデータベースがあります情報など。紹介の一部は臓器提供者になります。ほとんどのルックアップテーブルがディメンションテーブルになることは理解していますが、すべてを追跡するために2つのファクトテーブル(factReferralInfoとfactOrganDonors)または1つのファクトテーブルのみが必要かどうか疑問に思っています。「紹介の総数」、「腎臓ドナーの総数」などのクエリがある場合があります。
それについて考えた後、私は各死の紹介の属性を持つ次元dimReferralが必要だと思います。ファクトテーブルと同じスコープのディメンションテーブルを使用するべきではないと読んだので、混乱していると思います。たぶんファクトテーブルには、腎臓、膵臓、肺など、寄付された臓器ごとに1つの行があります。
ssis - starschemaETLからデータウェアハウスへ
私たちは学校のプロジェクトで忙しいです。データウェアハウスを構築する必要がありますが、行き詰まります。
私は次のstarschemaを持っています:
dim_location:
Location_key(主キー)
街
dim_condition:
Condition_key(主キー)
説明(例:良い、悪い、非常に悪い、非常に良いなど)
dim_time:
Time_key
年
日にち
クォーター
等
ファクトテーブルグラウンド:
Time_Key(外国)
Location_Key(外国)
Condition_Key(外国)
ロケーションディメンションは、すべての種類のロケーションを含むテーブルである必要があります。条件ディメンションは、良い、悪い、それほど悪くない、非常に良いなどの条件を持つテーブルである必要があります。また、時間ディメンションは、すべての日、四半期などのテーブルである必要があります。
このことから知っておくべきことは、「特定の場所の特定の日に、地面が特定の状態にあったことを知りたい」ということです。
例:1月20日の月曜日、アムステルダムの地面は良くありませんでした。
それらの次元と事実を埋めるために使用する必要のあるダンプがいくつかあります。しかし、私は最善の方法が何であるか、そしてファクトテーブルを埋める方法を知りません。私はすでにSSISでディメンションを入力しましたが、それはうまくいきましたが、ファクトテーブルを入力できません(試行:複数のルックアップ、マージ、マージ結合)誰かがデータウェアハウスを作成して入力する方法を段階的に教えてもらえますか(最良の方法)?
英語が下手でごめんなさい。
ヘルプは非常にありがたいです。
ありがとう!
data-warehouse - データウェアハウス:蓄積されたデータの操作
私たちのデータウェアハウスは、データソースから蓄積されたデータを使用して(そして蓄積を反転する方法はありません)、スノーフレークスキーマを作成します。対処しなければならない要件は、日付範囲に基づいてレポートを作成するためにスキーマを使用できる必要があることです。
私たちのスキーマは次のようになります(簡略化):
次のようなレポートデータセットを作成します。
問題は、統計ディメンションのデータがすでに蓄積されており、蓄積を元に戻すことができないことです。ファクトテーブルのおよその行数を計算し、5,250,137,022,180を取得しました。データには約250万の日付範囲の順列があり、累積のため、日付ディメンションとファクトテーブルにそれらを計算する必要があります。SQLのSUM関数は、累積のために機能しません(異なるセットに属する2つの値を追加することはできません)。
計算を実行可能にするために従うことができるベストプラクティスはありますか?スキーマ設計に何か問題がありますか?
オンライントレーニングに関するデータを報告する必要があります。データソースは、10年以上前の部品を使用するレガシーデータプロバイダーであるため、内部ロジックを再構築することはできません。統計ディメンションには、たとえば、Webベースのトレーニング(WBT)でユーザーが達成した進行状況(%)、WBTページあたりの呼び出し数、WBTのステータス(ユーザーの場合、「完了」など)が含まれます。 、 そう。データプロバイダーについて重要なことは、現在の状態のスナップショットを提供するだけです。過去のデータにアクセスすることはできません。
oracle - データウェアハウジングにおけるスターvsスノーフレークスキーマ?
現在、私は、顧客離れ行動、不正検出、CRM分析を特徴とする倉庫ベースのインテリジェントトランザクション分析バンキングシステムに携わってきました。私たちOracle
はデータベースとして使用してきました。これは、分析に使用されるデータマイニングアルゴリズムを備えた完全なデータウェアハウジングプロジェクトです。
銀行の約1000人の顧客の記録があります。モデリングには、スタースキーマ、スノーフレークスキーマ、コンステレーションスキーマのどちらを使用するのがよいでしょうか。スタースキーマとスノーフレークスキーマの基本的な違いを知っています。ディメンションテーブルの正規化はスノーフレーク(別名スノーフレーク)スキーマで発生します。これは、大規模なデータベースの場合に結合するのに問題がある可能性があります。
では、私の場合、どちらのスキーマが適しているでしょうか?データウェアハウジングに携わる経験豊富なプログラマーからの回答を歓迎します。
前もって感謝します!
terminology - 開始日と終了日が有効なファクト テーブルを何と呼びますか?
これは用語に関するものであるため、いくつかの点で少しばかげた質問です。
ファクト テーブルが属しているディメンションに関して経時的に変化するファクトを記録するファクト テーブルがある場合、そのようなファクト テーブルは何と呼ばれますか? 実際、特定の名前はありますか?
たとえば、ファクト テーブルは、ヘルプ デスク システムにチケットのインスタンスを格納し、ステータス ディメンションを持っている場合があります。チケットは、ライフサイクルの過程でステータスがオープンから解決済みに変わります。履歴レポートのために、状態の変化ごとにファクト レコードを保存できる必要があります。
mysql - 複数の JOIN によるクエリの最適化
約 600 万行あるスター スキーマのファクト テーブル「foo_success」に対するクエリがあります。このテーブルは、ディメンション テーブルへの (整数) 参照のみを保持します。ストレージ エンジンとして MyISAM を使用します。
クエリ:
私がこれまでに試したこと:
- これは単純な結合バージョンであり、INNER JOIN の代替と同等の速度です。
- 結合された、または条件の一部であるすべてのフィールドにインデックスがあります。
- このクエリで EXPLAIN を使用したところ、クエリのコスト (処理された行数) は、テーブル user で 128596、テーブル foo_success で 77 であることがわかりました。
- ユーザー テーブルへの依存関係を削除しようとしましたが、これにより、ファクト テーブル foo_success で 600 万を超える処理行数が発生しました。
このクエリを完了するのに約 1.5 分かかります。これは、読み取り速度が最適化されたデータ ウェアハウスのスター スキーマに対する私の期待をはるかに超えています。このモンスターを最適化する方法はありますか?
olap - OLAP キューブの設計上の問題 - 多対 1 の関係を削除する方法
以前の質問OLAP Cube design issue for Telecommunication Dataに私の projectdetail を含めました。1 つの質問がありました。OLAP で 1 対多の関係を削除する必要がありますか。私が聞いた話では、OLAP は 0 次元の質問、1 次元の質問、そしてすぐに答えを出すことができるはずです。また、同じ日にいくつかの通話の詳細があったので、質問に答えるためにどのように設計すればよいですか? day1 の通話時間は? 私は問題を解決するのが得意ではないので、問題を理解する上で問題が発生した場合は、以下にコメントしてください。