【发布时间】:2012-03-11 12:44:30
【问题描述】:
我们正在收集大约 30,000 种金融工具的市场数据。我们希望每 10 分钟左右保留一次历史数据。它都保存在 PostgreSQL 表中。我在两种方法之间进行辩论:
“快照”
每 10 分钟存储一次所有符号的价格,带有漂亮的圆形时间戳。
优点:
- 使查询变得容易,因为时间戳是已知的先验,只需四舍五入到最后 10 分钟的倍数。
缺点:
- 更大的数据集
- 大刀片会影响性能
- 不会在不存储其他信息的情况下传达仪器数据更改的频率
“滚动更新”
仅在更新时存储每个符号,如果自上次更新后经过的时间超过 10 分钟。
优点:
- 更少和更小(更便宜)的插件
- 较小的数据集
- 数据将更准确地反映实际的变化频率(对于每 10 分钟更换一次以下的仪器)
缺点:
- 查询将更加复杂/昂贵,因为所需行的时间戳未知。
注意事项
- 插入比查询多得多
- 我们希望能够扩展到更多的仪器,可能会更新频率略高。
我一直在执行“滚动更新”,但没有发现查询有任何性能问题。表上只有一个多列索引,但插入似乎仍然比查询昂贵得多,因此这似乎是更适合的方法。这是一个合理的方法吗?还有其他我遗漏的注意事项吗?
【问题讨论】:
-
您选择了哪个选项,为什么?数据库是干什么用的?
标签: database time-series