2015-11-03 20 views
0

假設我有一個訂購系統,其表格大小約爲50,000行,每天增長約100行。另外,比如一旦下單,我需要在接下來的30天內存儲有關該訂單的度量標準,並每天報告這些度量標準(即在第2天,此訂單有X個激活和Y個非激活)。什麼時候變得正常化與明星幫助表現?

  • 1臺叫做產品,其中包含了產品上市
  • 1表稱爲訂單,其中包含了訂單數據和產品ID
  • 1臺名爲指標,其中包含日期字段的詳細信息,並訂單ID和相關度量。

如果我模仿這在星型模式的格式,我會設計這樣的:

  • FactOrders表,其中有30天* X命令行和商店周圍的訂單,產品ID的所有元數據和度量標準(每行代表某一天某一產品的指標)。
  • DimProducts表,用於存儲產品元數據

是否從一個巨大的FactOrders表我的性能增益只需要一個連接來獲取所有相關信息,超過的事實,我增加表大小的30倍,並有一個令人難以置信重複數據的數量,與真正規範化的模型有一個額外的連接,但有更小的表?或者我設計這個不正確的星形模式格式?

回答

1

不要標準化這個小的東西來擺脫連接。正確地索引。加入並不差,加入也不錯。數據庫旨在使用它們。

反規範化是有風險的數據完整性和可能甚至更快,因爲表的寬得多的尺寸。在這個微小的表格中,非規範化很難實現。

+0

感謝您的答覆 - 作爲後續行動,雖然,那麼,什麼時候星形模式更有意義 - 當你處理更大的數據(單位:百萬上千萬行或)的容量? – tarun713

+1

應用程序用於數據輸入時幾乎從不使用。但是,一般來說,當你處於數十億或數億或更高的數量時,通常會進行報告。當然,對於低於一百萬的任何事情來說都是過度的,我們有很多數據庫有數百萬條非規範化的記錄。對於僅從計劃數據導入中提供的報告應用程序,這是最後一種技術。然後只有當複雜的報告查詢減慢其他用戶時。 – HLGEM