有效地将数据保存到sql表中?

时间:2014-04-16 13:47:17

标签: sql-server tsql ssas business-intelligence bids

我们每15分钟读取并解析一个包含一个元素的kpi分数的XML文件。此元素有5个子元素,每个子元素的 400 kpi得分。有 250个元素(250个文件),这意味着每15分钟我将存储500K kpi分数(250个元素* 5个子元素* 400 kpi分数= 500K KPI)的

此数据将用于报告,主要是每小时和每天汇总所有这些数据。换句话说,大多数KPI最终将被分组。但第一步是以某种方式存储个别柜台。

第一个,最常见的想法是创建一个表,其中列是KPI。但这是通过类似的数据完成的,至少可以说性能低于标准。

所以我的问题是,存储这些原始数据的最佳方法是什么?

我正在考虑创建一个包含以下列的小表:[Date],[Hour],[Minute],[KPI],[Score]。这里的问题(我认为)将是查询数据的难度;与#34;常规" table,我可以简单地从TABLE GROUP BY 中选择KPI1,KPI2,KPI29 。使用这种新格式,仅使用一个查询对几个KPIS进行分组就会稍微困难一些。

感谢。

2 个答案:

答案 0 :(得分:1)

如果您需要原始数据,那么最好的方法是将其存储在表格中的列类型XML上(加上日期/时间以及可能用于识别负载的其他数据)

答案 1 :(得分:0)

@Jayvee完全正确(+1)。我想补充一点:查询原始数据通常很慢。尽快存储聚合并查询聚合而不是原始数据。原始数据通常只能用于历史和诊断目的。

我的意思是“尽快存储聚合”:您可以在导入时计算它们(可能会减慢导入速度),或者(更好)您可以(也)将它们插入到(第二个)“缓冲区”表中运行单独的作业来聚合缓冲的记录,然后清除缓冲区。这样,您就不必查询大量历史记录表来汇总新数据。