2012-01-18 41 views
1

我一直在寻找关于如何将数据存储在数据库中以实现历史数据挖掘的建议。如果我能够在某个特定时间获得实体的状态,那么存储它的最佳方式是什么,以便我可以历史地挖掘这些数据,并根据过去的状况预测该状态的可能性?如何存储历史服务器数据?

有关更具体的示例,我可以获取服务器的上/下状态以及该服务器的当前负载。我可以定期安排。我想存储这些数据,以便我可以轻松查询特定时间段的上/下状态或负载,或获取该服务器的整个历史记录。我没有太多的经验,如果有的话,在数据库设计。

回答

1

这就是为什么Ralph Kimball(和其他人)发明了数据仓库。

您的星型架构的尺寸类似于服务器和时间。你有一个记录状态变化的事实表(Up和Down)和一个记录Load在给定时间点的事实表。

第1步。找到一个关于星型模式设计的好教程。如有必要,可以购买一两本书。每一刻你都需要学习如何进行星型模式数据建模。

第2步。尽可能便宜,快速地构建原型架构。加载数据,以便您可以编写一些查询并查看工作情况。犯错误。修复它们。

第3步。当你得到一些工作,然后写下一个很好的设计。

第4步。建立你的“真正的”数据集市。

第5步。建立你的“生产”负载。

第6步。查询。

+0

所以它听起来像我有2个事实表(上或下和负载)为每个服务器,是否正确? – s73v3r 2012-01-18 00:53:41

+0

现在,当涉及到存储数据时,我应该在发生某些更改时添加记录,或者获取每个数据点的记录吗?例如,假设我每15分钟获取一次服务器数据。在下午1点,服务器从高负载转换到中负载,并且在转换到另一个状态之前停留一个小时。所以我有4个数据点,都说中等负载。我是否应该将此存储为4个条目,全部包含测量时间和中等负载,还是应该有一个中等负载条目,开始时间为13:00,结束时间为14:00? – s73v3r 2012-01-18 02:20:18

+0

第1步。获取Kimball的书。以特定的时间间隔存储数据,因此您不必插入数据。收集大量数据。最后使用平面文件并加载RDBMS--并且只有当您想要使用SQL查询子集时。大多数处理可以通过组织CSV文件来完成,以便于加载。 – 2012-01-18 10:50:14

0

这就是为什么有新版本的标准SQL:2011。

只需将适当的开始日期和结束日期属性添加到您的实体和/或适当的列到表中,基本上就完成了。

当然,如果你有一个支持新功能的引擎,那么新的SQL会为你做很多讨厌的工作(但不是全部)。