2012-01-27 62 views
2

我的代码从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小时6小时增加23分钟
  • ID = 2值1增加了105 23分钟
  • ID = 3 VALUE1在7小时下降8分钟

难点:

  • 收集时间不一致(I收集每天多次随着时间的变化的长度集合之间)
  • 该值可以增加或减少或为空

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

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

对我该如何构建架构有任何建议吗?将这些数据转换为传统的星型模式是否可能?

UPDATE回答问题:

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

感谢任何见解/方向,

- 保罗

+1

请指定您正在使用的数据库 – 2012-01-27 09:16:36

+1

关于“值1中的最大变化”,如果值1在您的间隔期间从50变为100,然后返回52,那么变化为2或a 98的变化? – 2012-01-27 12:21:40

+0

我已更新发布回答Lukas Eder和Catcall的问题。 – PaulMest 2012-01-27 21:59:20

回答

0

这似乎是你的选择可能是去一个基于列的数据存储你的数据看到这个线程What is the best way of storing trend data?

这些是MySQL兼容的引擎,所以我怀疑对您的基础架构所做的更改可能并不重要。