2

我對某些問題感到困惑。我需要他們的答案。 如果我們的關係模型也是非規範化的,那麼爲什麼我們更喜歡維度模型? 我們更喜歡維度模型而不是關係模型的原因是什麼? 您的歷史數據也可以存儲在OLTP中,您可以在任何OLTP上輕鬆執行報告,那麼爲什麼我們使用維度模型和數據倉庫? 維度與非規格化表格有什麼區別?爲什麼我們在非規範化關係模型上使用維度模型?

在此先感謝

回答

8

簡短的回答:

如果您的查找/從OLTP表的檢索是足夠快,和您的特定搜索需求就有這樣的併發症描述下面,那麼就不需要進入任何維度的星形模式。

龍答:

尺寸和非標準化的模型有不同的目的。維數模型通常用於數據倉庫場景,特別適用於計算數字需要超快查詢結果的情況,例如「按季度銷售」或「由銷售人員」。預先計算這些數據後,數據將存儲在維度模型中,並根據某個固定的時間表進行更新。

但是,即使沒有涉及到數據倉庫,多維模型可能是有用的,其目的可以補充的是,非標準化的模式,如下面的例子:

一個Dimensional model使快速搜索dimension tablesfact table之間的連接設置爲star-schema。搜索John Smith將被簡化,因爲我們將只在相關維度表中搜索John OR Smith,並從事實表中獲取相應的人員ID(事實表FKs指向維表PK),從而使所有人在他們的名字中的2個關鍵字。 (進一步的增強將使我們約翰,喬恩,約翰尼,喬納森·史密斯,Psmith,史邁士通過建立snowflake尺寸搜索具有「約翰·史密斯」的變化他們的名字,例如所有的人。)

一個Denormalized model另一方面,使快速檢索,例如返回關於特定項目的許多列而不必將多個表連接在一起。

因此,在上面的場景中,我們首先使用維度模型爲我們感興趣的人員獲取一組ID,然後使用非規範化表格獲取這些選定ID的完整詳細信息,而無需進一步處理連接。

如果我們直接查詢非規範化表,這種搜索會非常緩慢,因爲需要在PersonName列上進行文本搜索。如果我們嘗試包含名稱變體,或者需要添加更多搜索條件,它會變得更慢。

很好的參考:

用於瞭解三維造型的巨大(而且很有意思)的話題一個很好的參考是拉爾夫·金博爾的The Data Warehouse Lifecycle Toolkit。其伴侶卷The Data Warehouse Toolkit涵蓋了大量的實際使用案例。

希望這會有所幫助!

+0

維度模型不一定要在彙總級別預先計算數字,但可能會因爲其他性能原因而執行此操作。 「原始」維度模型取而代之的是精細的詳細級別,數字在查詢時彙總。我也沒有看到快速搜索和快速檢索之間的區別。維度模型在某些方面也是非規範化的。 'john','jon'示例也不是雪花維度的示例,您也不會首先使用維度模型和非規格化表格。維度是非規範化的,並且具有您所需的所有詳細信息。 – Rich

1

維度模型使用非規格化作爲其技術之一,以便優化數據庫: - 查詢性能和用戶理解 。

OLTP系統通常很難從OLTP系統報告,而且速度也很慢,正在針對OLTP(插入,更新,刪除)性能進行優化,同時也保護了事務完整性。 一個使用維度模型的數據倉庫仍然使用關係技術,但是反而被優化考慮獲取數據以獲取數據的經驗。

事實是,您不能總是輕鬆地從任何OLTP報告系統:這些表格往往模糊不清,而沒有考慮到人們會想要獲取數據來做出業務決策。生成SQL的報告工具也很難對典型的規範化模式進行高性能查詢。

OLTP技術的現代進步爲解決性能問題的維度模型提供了替代方案,但仍未解決創建維度模型時的典型步驟,以使數據庫表更易於理解和導航。

維度是一個表格,旨在表示業務概念或實體,爲業務流程(或「事實」)的特定度量指定上下文。通常在維度模型中對維度進行非規範化處理,以減少要理解/導航的表的數量,但出於性能原因也要減少連接的數量。例如,產品維度可能會聯繫品牌信息,而在OLTP模型中,這些維度可能是單獨的表格,這些表格允許用戶直接過濾品牌信息,而無需遍歷多個表格。

相關問題