database - 投资组合/风险管理的头寸和交易数据库设计
问题描述
我正在设计一个用于跟踪股票交易和实时投资组合持有量的数据库。系统应该能够在自定义时间段的基础上提取历史头寸(例如,日终持有量)。我现在的设计包括一个事务表和一个实时仓位表,当每笔事务入库时会自动触发实时仓位表的更新。我打算对事务表使用 PostgreSQL 和 TimescaleDB 扩展。
我对如何实现历史持有量的功能有点困惑,因为历史持有量作为某个时间戳t
可以通过将带有时间戳的交易聚合<=t
在一起来得出。我应该使用单独的表格来记录历史持有量还是简单地进行汇总?我也在考虑使用二进制文件来存储每天结束时的实时仓位快照,以支持历史仓位查找。
我对数据库设计几乎没有经验,因此感谢任何建议/帮助。
解决方案
这个问题缺乏细节,所以我的回答很笼统。
您可以做的一件事是有两个表:一个用于详细数据,另一个用于聚合。然后,您每天从前者计算后者的一条记录。对明细表使用分区可以轻松删除旧数据。
如果数据结构允许,您也可以为两者使用相同的(分区)表。然后,您每天计算一条新的聚合记录,删除当天的分区并扩展“聚合”分区的分区边界。
如果您需要 TimescaleDB 扩展,请仔细考虑。如果它提供了您知道自己需要的好处,那就去做吧。如果没有,请不要使用它。很少有依赖项总是好的。仅仅因为您要存储时间序列数据并不意味着您需要 TimescaleDB。
推荐阅读
- node.js - Mongodb领域,registerUser未定义,Node.js
- dart - Dart While 循环的用法
- asp.net-mvc - Asp.Net MVC 核心 3.1。为什么 index.cshtml.g.cs 添加到视图文件夹并且没有错误
- python - python中字符串不同翻译的最佳实践
- php - 为什么循环写入数据库无限次忽略循环规则只做一次?
- .net - 具有 CosmosDB 输入绑定的 Azure Function App - 是否可以在不使用 Urifactory.CreateDocumentURI() 的情况下获取数据?
- c# - 在无尽的跑步者中获得高分
- python - Python,Guizero:更改应用程序顶部菜单栏的颜色
- kubernetes - Kubernetes 将镜像数据复制到卷挂载
- composer-php - 未找到自己的包/类中的 Composer 自动加载