【问题标题】:How to store historical server data?如何存储历史服务器数据?
【发布时间】:2012-02-12 18:43:57
【问题描述】:

我正在寻找有关如何将数据存储在数据库中以进行历史数据挖掘的建议。如果我可以在给定时间获取实体的状态,那么存储它的最佳方式是什么,以便我可以历史地挖掘该数据,根据过去的状态预测状态可能是什么?

举一个更具体的例子,我可以获取服务器的启动/关闭状态,以及该服务器的当前负载。我可以定期得到这个。我想存储这些数据,以便我可以轻松查询特定时间范围内的上/下状态或负载,或获取该服务器的整个历史记录。我在数据库设计方面没有太多经验(如果有的话)。

【问题讨论】:

    标签: database-design server data-modeling historical-db


    【解决方案1】:

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

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

    当然,如果您有一个支持新功能的引擎,那么新 SQL 将为您完成相当多(但不是全部)原本非常讨厌的工作。

    【讨论】:

      【解决方案2】:

      这就是 Ralph Kimball(和其他人)发明数据仓库的原因。

      您有星型架构,具有服务器和时间等维度。您有一个记录状态变化(Up 和 Down)的事实表和一个记录给定时间点 Load 的事实表。

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

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

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

      第 4 步。构建您的“真实”数据集市。

      第 5 步。构建您的“生产”负载。

      第 6 步。查询。

      【讨论】:

      • 所以听起来我每个服务器都有 2 个事实表(Up 或 Down 和 Load),对吗?
      • 现在,当涉及到存储数据时,我应该在发生变化时添加一条记录,还是为我获得的每个数据点添加一条记录?例如,假设我每 15 分钟获取一次服务器数据。下午 1 点,服务器从高负载转换为中等负载,并在此状态下保持一个小时,然后再转换为另一种状态。所以我有 4 个数据点都说中等负载。我应该将其存储为 4 个条目,全部包含测量时间和中等负载,还是应该有一个条目具有中等负载,开始时间为 13:00,结束时间为 14:00?
      • 第 1 步。获取 Kimball 的书。以特定的时间间隔存储数据,因此您不必进行插值。收集大量数据。使用平面文件并最后加载 RDBMS —— 并且仅当您有一个要使用 SQL 查询的子集时。大多数处理都可以通过将 CSV 文件组织成易于加载来完成。
      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多