2017-05-18 117 views
0

我試圖去看看類似於我的現有問題,但一直沒能找到明確的答案。大型表格的數據庫設計

我在一個擁有大數據倉庫(數十億行)的大型公司工作,然而這個超級慢並且不適合臨時分析 - 我們正在尋找新的東西,但時間跨度只有幾年現在起;我(和我的部門)無法真正等待。 因此,我已被授予一個新的空白SQL Server 2014數據庫,我將從我們的數據倉庫中存儲我們將經常使用的信息。

我們將主要通過第三方分析工具來訪問這些數據,這些工具不會緩存數據,但每次點擊或添加新圖表時都會直接訪問它;因此,我們需要儘可能快的性能,因爲如果您每次在圖表中添加新維度時都會等待很長時間,這會讓您非常沮喪。

我從我們的數據源採集數據,其中結構/設計通常很好,然而有些事情我覺得很煩人(例如客戶的名字是用日期ID存儲的,這意味着如果你看一個客戶,你會看到他們的名字隨着時間而改變 - 爲了我的分析目的,這是沒有意義的,我想以保持名稱(和其他維度)不斷回溯到時間

現在數據並沒有真正分成事實和維度,而是介於兩者之間 我在考慮將數據重構爲事實和維度,所以例如客戶名稱不是坐在財務部門,而是在一個維度表中 - 這樣我就知道我每次都得到相同的名稱。

我的問題是這樣的:將數據分解成事實和維度減慢性能comp是否將所有行中的所有信息(列)都放在一個大表中?連接會減慢我的查詢嗎?

我每月處理10-15百萬行數據=每年120-180百萬行,3-6年=最多約10億行(絕對最大值)。

這有道理嗎?

謝謝。

/Steffen。

回答

1

最好將事件和維度建模,這將有助於報表層更快地查詢。

說到這一點,我們如何設計維度表和事實表格非常重要。典型的想法是將整數類型作爲維度的關鍵字,並且您將可以靈活地處理將來變化緩慢的類型I,類型II。

設計的事實也很重要,問題多數是由於IO所以可以考慮列存儲索引的事實,使您的數據將被壓縮,你將有更快的性能,你去通過這個鏈接,更好的理解:

ColumnStore Index

+0

謝謝;我會研究:-) – ssn