【发布时间】:2018-03-16 22:39:37
【问题描述】:
假设我有一个 employees 表(大约有一百万员工)和一个 tasks 表(有几百个任务)。
现在,我有一个机制来预测员工完成任务的概率(百分比)——假设我有四个这样的机制,每个机制都输出它自己的概率。
综合起来,我现在需要存储 n1(员工)乘以 n2(任务)乘以 n3(机制)的结果。
我想知道存储这些结果的最佳方式是什么。
我有几个选择和想法:
在 employees 或 tasks 表中维护一列 (JSONField) -- 注意:如果其中一个值发生更改,则必须更新整个列数据
维护第三张表 predictions,其中包含 employee 和 task 的外键,其中有一列用于存储 predicted_probability -- 担心:必须存储 n1 * n2 * n3 条记录,我担心可扩展性和性能
感谢您的帮助。
PS:我正在使用带有 postgres 的 Django
【问题讨论】:
-
存储过程可能吗?
-
predictions表是正确的方法。根据您访问数据的方式,表的大小无关紧要。例如我希望阅读单个员工的预测具有相当稳定的表现。只有当您需要处理所有(或大部分)行时,大表才会成为问题。 如果你在测试后遇到性能问题,你可以例如按任务或按任务和机制对表进行分区(取决于查询的结构) -
感谢@a_horse_with_no_name 的评论。请将其添加为答案,以便我将其标记为已回答。
-
@Tomm 在这种情况下你打算如何使用存储过程?
标签: django postgresql database-design scalability query-performance