【问题标题】:Position & Transaction database design for portfolio/risk management [closed]投资组合/风险管理的头寸和交易数据库设计[关闭]
【发布时间】:2021-02-10 01:45:50
【问题描述】:

我正在设计一个用于跟踪股票交易和实时投资组合持有量的数据库。系统应该能够在自定义时间段的基础上提取历史头寸(例如,日终持仓)。我目前的设计包括一张交易表和一张实时仓位表,当每笔交易入库时会自动触发实时仓位表的更新。我打算为事务表使用 PostgreSQL 和 TimescaleDB 扩展。

我对如何实现历史持有量的功能有点困惑,因为历史持有量作为某个时间戳t可以通过将带有时间戳<=t的交易聚合在一起得出。我应该使用单独的表格来记录历史持有量还是简单地进行汇总?我也在考虑使用二进制文件来存储每天结束时的实时仓位快照,以支持历史仓位查找。

我对数据库设计经验不足,因此感谢任何建议/帮助。

【问题讨论】:

    标签: database postgresql database-design time-series timescaledb


    【解决方案1】:

    这个问题缺乏细节,所以我的回答很笼统。

    您可以做的一件事是有两个表:一个用于详细数据,另一个用于聚合。然后,您每天从前者计算后者的一条记录。对明细表使用分区可以轻松摆脱旧数据。

    如果数据结构允许,您也可以对两者使用相同的(分区的)表。然后,您每天计算一条新的聚合记录,删除当天的分区并扩展“聚合”分区的分区边界。

    如果您需要 TimescaleDB 扩展,请仔细考虑。如果它提供了您知道自己需要的好处,那就去做吧。如果没有,请不要使用它。很少有依赖项总是好的。仅仅因为您存储时间序列数据并不意味着您需要 TimescaleDB。

    【讨论】:

      猜你喜欢
      • 2019-08-28
      • 2021-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      相关资源
      最近更新 更多