在数据库中存储映射的最佳方式
Best way to store mappings in a database
假设我有一个 employees table(大约有一百万名员工)和一个 tasks table (有几百个任务)。
现在,我有一个机制来预测员工完成任务的可能性(百分比)——假设我有四个这样的机制,每个机制输出它自己的概率。
总而言之,我现在有 n1(employees) 次 n2(tasks) 次 n3(mechanisms) 个结果要存储。
我想知道存储这些结果的最佳方式是什么。
我有几个选择和想法:
在 employees 或 tasks tables 中维护一个列 (JSONField) --问题:如果其中一个值发生变化,则必须更新整个列数据
维护第三个 table 预测 ,外键指向 employee 和 task 用一列来存储 predicted_probability -- 关注点:将不得不存储 n1 * n2 * n3 条记录,我担心可伸缩性和性能
感谢您的帮助。
PS:我正在使用 Django 和 postgres
predictions
table 才是正确的做法。根据您访问数据的方式,table 的大小无关紧要。例如我希望读取单个员工的预测具有相当稳定的性能。只有当您需要处理所有(或大部分)行时,大 table 才会成为问题。如果你在测试后遇到性能问题,你可以,例如table 按任务或按任务和机制(取决于您的查询的结构)
的分区
-感谢@a_horse_with_no_name
假设我有一个 employees table(大约有一百万名员工)和一个 tasks table (有几百个任务)。
现在,我有一个机制来预测员工完成任务的可能性(百分比)——假设我有四个这样的机制,每个机制输出它自己的概率。
总而言之,我现在有 n1(employees) 次 n2(tasks) 次 n3(mechanisms) 个结果要存储。
我想知道存储这些结果的最佳方式是什么。
我有几个选择和想法:
在 employees 或 tasks tables 中维护一个列 (JSONField) --问题:如果其中一个值发生变化,则必须更新整个列数据
维护第三个 table 预测 ,外键指向 employee 和 task 用一列来存储 predicted_probability -- 关注点:将不得不存储 n1 * n2 * n3 条记录,我担心可伸缩性和性能
感谢您的帮助。
PS:我正在使用 Django 和 postgres
predictions
table 才是正确的做法。根据您访问数据的方式,table 的大小无关紧要。例如我希望读取单个员工的预测具有相当稳定的性能。只有当您需要处理所有(或大部分)行时,大 table 才会成为问题。如果你在测试后遇到性能问题,你可以,例如table 按任务或按任务和机制(取决于您的查询的结构)
-感谢@a_horse_with_no_name