web-dev-qa-db-ja.com

トランザクションレベルで英数字varchar(30)を使用して縮退ディメンションを実装しますか?

私は現在、最初のデータモデルの設計に取り組んでおり、縮退したディメンションのこの特定の実装について混乱しています。キンボールの 設計のヒント46 によると、扱いにくい(英数字)縮退したディメンションは、代理​​キーを使用して実装できます。トランザクション行ごとに1行のグレインを持つファクトテーブルに、2列の縮退キー要件char(6)とvarchar(30)があります。したがって、DDは、単純な整数と比較すると、大量のスペースを消費します。ただし、ここに追加する追加のコンテキストはありません。そのままにして余分なスペースを確保するのが最善でしょうか、それともファクトテーブルに比例して大きくなることを知って、これを別の次元に入れる価値があります(1つあたり平均4行あるため、約25%)。トランザクション)。

2
Sean Brookins

パフォーマンスとスペースの使用に関するキンボールのガイダンスは、最新の列型ストレージを使用する場合は、一粒の塩を使用する必要があります。また、SQL Serverデータウェアハウスの場合、ファクトテーブルは通常 Clustered Columnstores として格納する必要があります。列型ストレージの低カーディナリティ属性は、非圧縮行ストアよりもはるかに安価です。

また、列ストアの幅が広くカーディナリティの高い属性は、ストレージサイズに大きな影響を与えますが、列は必要な場合にのみフェッチおよびスキャンされるため、クエリのパフォーマンスには影響しません。行全体をフェッチ、キャッシュ、および読み取る必要はありません。