在数据库中存储映射的最佳方法

时间:2017-10-05 10:29:29

标签: django postgresql database-design scalability query-performance

假设我有一个员工表(约有一百万名员工)和一个任务表(包含几百个任务)。

现在,我有一个机制来预测员工完成任务的可能性(百分比) - 假设我有四个这样的机制,每个机制都输出它自己的概率。

总而言之,我现在有n1(员工)时间n2(任务)次n3(机制)结果存储。

我想知道存储这些结果的最佳方法是什么。

我有几个选择和想法:

  • 员工任务表中维护列(JSONField) - 关注:如果其中一个值发生更改,则必须更新整个列数据

  • 使用员工任务的外键维护第三个表预测,并使用一列来存储 predict_probability < / em> - 关注:将要存储n1 * n2 * n3条记录,我担心可扩展性和性能

感谢您的帮助。

PS:我正在使用带有postgres的Django

1 个答案:

答案 0 :(得分:0)

predictions表是正确的方法。根据您访问数据的方式,表的大小无关紧要。例如我希望读一个单一员工的预测有一个非常稳定的表现。只有当您需要处理所有(或大部分)行时,大型表才会成为问题。如果您在测试后遇到性能问题,则可以例如按任务或按任务和机制对表进行分区(取决于查询的结构)

-Credits to @a_horse_with_no_name