首页 > 解决方案 > 投资组合/风险管理的头寸和交易数据库设计

问题描述

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

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

我对数据库设计几乎没有经验,因此感谢任何建议/帮助。

标签: databasepostgresqldatabase-designtime-seriestimescaledb

解决方案


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

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

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

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


推荐阅读