Database design 分析不断增长的数据的最佳方法?

Database design 分析不断增长的数据的最佳方法?,database-design,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:02a

我的代码从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值1在6小时23分钟内增加2
  • ID=2值1在6小时23分钟内增加105
  • ID=3值1在7小时8分钟内减少3
困难:

  • 收集时间不一致(我每天收集多次,每次收集的时间长度不同)
  • 这些值可以增加、减少或为空
我已经捕获了数千万行这些记录,我希望能够更轻松地查询它们,因此我认为我需要将这些数据转换为更适合我想要回答的问题的模式。我希望能够找到如下模式:

  • “在凌晨1点到凌晨5点之间,这些ID的值变化最大1”
  • “在过去30天中,哪些ID的value2增长最大(以绝对值和相对值衡量)?”
对于如何构造模式,有什么建议吗?是否有可能将这些数据转换为传统的星型模式

更新以回答问题:

  • 我目前正在使用Microsoft SQL Server,但我愿意使用MySQL或其他开源选项
  • 如果ID1从50变为100到52,我想知道它是+50,然后是-48。这样,我可以看到波动和净收益/损失随着时间的推移。例如,如果我在跟踪一个站点上的注册用户。。。一般来说,数字总是上升,但如果人们删除他们的帐户,我想确定这种趋势。然而,如果我的应用程序没有观察到从50到100的变化,只记录了50和52,它就不会知道这个数字曾经达到100
感谢您提供的见解/指导


-Paul

看起来您的选择可能是为您的数据创建一个基于列的数据存储。请参阅此线程


这些都是与MySQL兼容的引擎,因此我怀疑对您的基础架构的更改可能不是很大

您的选择似乎是为您的数据创建一个基于列的数据存储。请参见此线程


这些都是与MySQL兼容的引擎,因此我怀疑对您的基础架构的更改可能不是很大

另外,请说明您使用的数据库中关于“值1的最大变化”,如果值1在您的时间间隔内从50变为100,然后又变回52,这是变化2还是变化98?我已更新了帖子以回答Lukas Eder和Catcall的问题。值1和值2之间是否有任何关系?为什么id值不断重复,它们代表什么样的采样设备或采样操作?@ssmusoke value1_observed和value2_observed是与ID相关的时间点值。假设ID代表一个城市,那么value1_observed可能是温度,value2_observed可能是大气压力。请同时指定您使用的数据库关于“价值1的最大变化”,如果价值1在您的时间间隔内从50变为100,然后又变回52,这是变化2还是变化98?我已经更新了帖子,以回答Lukas Eder和Catcall的问题。价值1和价值2之间是否有任何关系?为什么id值不断重复,它们代表什么样的采样设备或采样操作?@ssmusoke value1_observed和value2_observed是与id相关的时间点值。假设id代表一个城市,那么value1_observed可能是温度,value2_observed可能是大气压力。