2010-09-15 61 views
8

在我們的應用程序中,我們支持用戶編寫的插件。數據倉庫任意字段

這些插件可以生成各種類型的數據(int,float,str或datetime),並且這些數據標有一系列元數據(用戶,當前目錄等)以及三個自由文本字段(MetricName,Var1,Var2)。

現在我們有好幾年這個數據,我試圖設計一個架構,它允許在分析的方式(圖表和材料)非常快的訪問這些指標。只要只有少數我們感興趣的度量標準,這很容易,但我們擁有大量不同粒度的不同度量標準,並且我們希望存儲用戶添加的數據以便日後進行分析(可能之後模式更改)。

示例數據:(請記住,這是很簡單的)

========================================================================================================= 
| BaseDir   | User | TrialNo | Project | ... | MetricValue | MetricName | Var1 | Var2  | 
========================================================================================================= 
| /path/to/me  | me  | 0  | domino | ... | 20   | Errors  | core | dumb  | 
| /path/to/me  | me  | 0  | domino | ... | 98.6  | Tempuratur | body |   | 
| /some/other/pwd | oneguy | 223  | farq | ... | 443   | ManMonths | waste | Mythical | 
| /some/other/pwd | oneguy | 224  | farq | ... | 0   | Albedo  | nose | PolarBear | 
| /path/to/me  | me  | 0  | domino | ... | 70.2  | Tempuratur | room |   | 
| /path/to/me2 | me  | 2  | domino | ... | 2020  | Errors  | misc | filtered | 

任何人都可以添加一個解析器插件以開始測量空速指標,我們希望我們的analisys工具「只是工作」在這個新的指標。


更新:

考慮到許多MetricName的是衆所周知的,事前,我能滿足我的要求,如果我能實現對這些指標的分析,並簡單地存儲其他用戶添加的指標。我們可以接受這樣一個事實,即如果沒有對模式進行編輯,新的度量標準將無法用於重型分析。

你們認爲這個解決方案是什麼?

我已經把我們的指標分爲三個事實表,一個用於不需要MetricTopic,一個爲那些做的,一個爲所有其他指標,包括那些意想不到的事實。

Metrics Schema #3


對於賞金:

我會接受它展示瞭如何使這個系統更多的功能,或使之與行業最佳實踐更緊密地批評任何。參考文獻增加了重量。

+0

舉個例子 - 假設有10個指標? – 2010-09-15 23:59:13

+0

@Jeffrey L Whitledge:此架構基於您的評論。 – bukzor 2010-09-17 00:55:04

+0

@Damir Sudarevic,@Jeffrey L Whitledge,@ S.Lott:我爲這個問題增加了一個賞金,希望你能想出更好的答案。 – bukzor 2010-09-21 02:46:43

回答

2

我可以爲我們關心的每個度量添加另一列,但可能會有數百甚至數千的範圍。我會編寫一個腳本來更新架構,而且這樣的設計聞起來很糟糕。

你沒有那麼多的事實。沒有那麼多單位。

事實上有單位。秒,磅,字節,美元。

您需要查看「星型模式」設計。你有維度(可能很多)和可衡量的事實(可能很少)。

您在事實和所有相關維度之間有聯繫。你可以做總結,依據事實,並在維度上進行分組。

你不能有成千上萬的獨立事實。這幾乎是不可能的。但是,您可以擁有數千個維度組合,這很常見。

從維度(定義性質)中分離出來的事實(令人愉快地增加的可衡量數量),並且圍繞幾個事實應該有很多維度。

購買Kimball的副本。

+0

剛發佈這個問題後,我在Kindle上買了Kimball。 – bukzor 2010-09-16 02:25:29

+0

我同意。如果仔細觀察,我可能只有40種不同的事實,但我仍然有一個問題,即有人可以不加警告地添加新的事實類型,並要求更新模式。對於具有不確定事實的系統有沒有共同的看法?創建一個名爲FactName的維度? – bukzor 2010-09-16 02:30:57

+0

*「你不可能有成千上萬的獨立事實,這幾乎是不可能的」*我不明白這個陳述背後的推理,你能解釋一下你的意思嗎? – naught101 2013-11-11 02:58:09

5

如果我理解正確,那麼您正在尋找一個架構來支持DW中度量的即時創建。在經典數據倉庫中,每個度量都是一個列,因此在Kimball明星中,您需要爲每個新度量添加一列 - 更改模式。

你有什麼是EAV模型,對EAV的分析並不容易也不快 - 看看this discussion

我建議你看看像splunk這樣的工具,它適合這類問題。

+0

謝謝!至少我現在爲我的問題命名。你知道關於EAV分析的權威文章嗎? – bukzor 2010-09-16 16:41:52

+0

@bukzor,不,不是。 – 2010-09-16 18:44:48