数据仓库任意字段

时间:2010-09-15 23:41:38

标签: mysql database database-design blob data-warehouse

在我们的应用程序中,我们支持用户编写的插件。

这些插件生成各种类型的数据(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  |

任何人都可以添加解析器插件来开始测量AirSpeed指标,我们希望我们的analisys工具能够“正常工作”这个新指标。


更新

考虑到许多MetricName事先都是众所周知的,如果我能够对这些指标进行分析,并且只是存储其他用户添加的指标,我就可以满足我的要求。我们可以接受这样一个事实:如果没有对架构进行编辑,新指标将无法用于重型分析。

你们怎么看待这个解决方案?

我将我们的指标分为三个事实表,一个用于不需要MetricTopic的事实,一个用于那些事实,一个用于所有其他指标,包括意外的指标。

Metrics Schema #3


赏金:

我会接受任何批评,展示如何使这个系统更具功能性,或者使其与行业最佳实践更加一致。对文献的参考增加了重量。

2 个答案:

答案 0 :(得分:5)

如果我理解正确,您正在寻找一种模式来支持在DW中动态创建度量。在经典数据仓库中,每个度量都是一列,因此在Kimball星中,您需要为每个新度量添加一列 - 更改架构。

您拥有的是EAV模型,对EAV的分析并不容易且不快 - 请查看this discussion

我建议你看一下像splunk这样适合这类问题的工具。

答案 1 :(得分:2)

  

我可以为我们关心的每个指标添加另一个列,但这可能会达到数百甚至数千。我只是为了更新架构而编写一个脚本,这听起来像是糟糕的设计。

你没有那么多事实。没有那么多单位。

事实有单位。秒,磅,字节,美元。

您需要查看“Star Schema”设计。你有维度(可能很多)和可衡量的事实(可能很少)。

您可以在事实和所有相关维度之间进行联接。你可以总结,依靠事实,并按尺寸分组。

你不可能有成千上万的独立事实。这几乎是不可能的。但是你可以拥有数以千计的维度组合,这很常见。

从维度(定义品质)中分离出事实(可测量的数量令人愉快),你应该在一些事实上有很多维度。

购买一份Kimball。