分析不断增长的数据的最佳方式?

时间:2012-01-27 09:12:46

标签: database-design

我的代码从Web服务中捕获数值。捕获的值通常会增加,但有时会减少。就目前而言,我只是对我在特定时间观察到的内容进行了愚蠢的捕捉......这就是我现在的表结构:

id   date_collected      value1_observed  value2_observed
1    2012-01-26 1:00am   500              12
2    2012-01-26 1:01am   90000            NULL
3    2012-01-26 1:02am   100              50
1    2012-01-26 7:23am   502              12
2    2012-01-26 7:24am   90105            NULL
3    2012-01-26 8:09am   97               55

你可以看到......

  • ID = 1 value1在 6小时23分钟内增加 2
  • ID = 2 value1在 6小时23分钟内增加 105
  • ID = 3 value1在 7小时8分钟内 3

难点:

  • 收集时间不一致(我每天收集多次,收集时间不同)
  • 值可以增加或减少或为空

我已经捕获了数千万行这些记录,我希望能够更轻松地查询它们,所以我想我需要将这些数据转换为更适合我的问题的模式想回答。我希望能找到像这样的模式:

  • “在凌晨1点到凌晨5点之间,这些ID在value1中的变化最大。”
  • “在过去的30天里,哪些ID的值增长最多(绝对和相对而言)?”

有关如何构建架构的建议吗?是否可以将此数据转换为传统的星型模式?

更新回答问题:

  • 我目前正在使用Microsoft SQL Server,但我愿意使用MySQL或其他开源选项。
  • 如果id 1从50变为100到52,我想知道它变为+50然后是-48。这样我可以看到随着时间的推移波动和净收益/损失。例如,如果我在网站上跟踪注册用户...通常数字总是上升,但如果人们删除他们的帐户,我会想要识别该趋势。但是,如果我的应用程序没有观察到从50到100的变化,并且只记录了50和52,那么就不会知道这个数字达到了100。

感谢您的任何见解/指导,

-Paul

1 个答案:

答案 0 :(得分:0)

您的选择似乎可能是为数据提供基于列的数据存储,请参阅此帖子What is the best way of storing trend data?

这些是MySQL兼容的引擎,因此我怀疑您的基础架构的更改可能不是主要的。