【问题标题】:Best Way to Analyze Ever-increasing Data?分析不断增长的数据的最佳方法?
【发布时间】:2012-01-27 09:12:45
【问题描述】:

我的代码从 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 的值变化最大”。
  • “在过去 30 天内,哪些 ID 的 value2 增长最快(绝对和相对)?”

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

更新回答问题:

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

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

-保罗

【问题讨论】:

  • 请同时指定您正在使用的数据库
  • 关于“值1的最大变化”,如果值1在你的区间内从50变到100再变回52,是变2还是变98?
  • 我已更新帖子以回答 Lukas Eder 和 Catcall 的问题。
  • value1和value2有什么关系吗?为什么 id 值一直重复,它们代表什么采样设备或采样操作?
  • @ssmusoke value1_observed 和 value2_observed 是与 ID 关联的时间点值。想象一下代表城市的 ID,然后 value1_observed 可能是温度, value2_observed 可能是气压。

标签: database-design


【解决方案1】:

您的选择似乎是为您的数据选择基于列的数据存储,请参阅此线程What is the best way of storing trend data?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多