在数据库中建模金融交易

时间:2009-12-21 20:32:19

标签: database-design

我真的在这里寻找一些意见和指导。

假设您需要为金融交易系统建模。这需要能够处理不同的产品(例如股票(股票)/商品(油/金)和固定收益(债券)

现在每种产品都有不同的特性

我想到的方法是让一个“交易”表格与“产品”表格大约有十列。

这使我可以回答诸如“在日期X上显示所有交易”之类的查询,并且还允许我提供有关实际交易的更具体信息。

我能以正确的方式解决这个问题吗?

我想另一种方法是让一个大爸爸“产品”表存储所有字段的并集,但这将非常稀疏

你们有什么想法

3 个答案:

答案 0 :(得分:2)

仅仅因为产品具有不同的特性,我认为您不应该将10个不同的外键放入不同的产品表中。

我建议使用单个事务表和单个(主)产品表。如果产品差别很大,那么可能值得将密钥和公共数据保存在主服务器中,然后将其他字段推送到具有一对一关系的扩展表中。这样可以避免在任何地方都有空值,但仍然遵守规范化规则。

答案 1 :(得分:0)

我知道你正在寻找方法,但实际上你可能想看看更适合这种情况的延迟引擎(想想SunGard和Murex解决方案)。传统的ORDBMS / RDBMS不像您的需求那样动态,并且在高容量/高交易的需求下爬行。

答案 2 :(得分:0)

因此,您真正的问题是如何为多个资产建模关系数据库模式。 您的数据库应该支持"操作" (例如,未平仓头寸/平仓/平仓S / L T / P订单等等)和"报告/查询" (例如,获得布伦特的所有交易,上个月以正PL收盘)

全部取决于系统负载。 如果您希望来自许多并发进程的数据库负载很大,并且这些表可能变得非常繁忙,那么您应该考虑一些技术:

1)CQRS - 命令查询分离 - 应用于关系数据库,这意味着您应该保持操作数据库清洁并针对插入/更新进行优化,并通过id进行短选 并将数据复制到另一个"报告" DB / Schema或Datawarehouse将其转换为包含所有必需索引的视图,聚合和非规范化表,以便对历史数据进行查询(过滤/排序/分页)非常快

2)缓存 - 缓存所有相对静态但在计算中大量使用的数据(例如点差,利率,客户风险管理参数,工具定义等等)以避免数据库往返和IO

3)我可以将此列表设置为很长时间,但这一切都取决于您的应用要求