我们是否应该将结果保存在我们可以随时使用数据进行计算的数据库模型中?

时间:2018-10-23 12:10:14

标签: python django

我正在尝试创建报告卡模型。我和我在一起:

 $builder->add('company', EntityType::class, array(
            'class' => Company::class,
            'query_builder' => function(EntityRepository $er) use ($options) {
             return $er->createQueryBuilder('c')
             ->where("c.id in {$options['id']}");
                    },
                    'label' => 'Company',
                ));

在我的ReportCard模型中创建诸如“ 总分,平均分数,正确答案的数量,问题的数量”之类的一个好主意吗?计算所有内容,每当观众访问此报告卡的详细视图时?

到目前为止,我的模型:

Question ids, answers selected for each question by candidate, correct answer id of each question, weight of each question. 

1 个答案:

答案 0 :(得分:1)

您需要记住的第一件事是,无论您做出什么决定,都需要权衡取舍。在所有选择中,您需要考虑有史以来最好的选择。

在Web中,您主要需要将可伸缩性视为与性能折衷相关的主要问题。 优良作法是将计算得出的字段(如在非资源匮乏的情况下)保持为model-properties,以使它们充当表的字段,但从不存储并按需计算。 现在,当我们考虑按需计算是否耗费资源时,您的响应将非常缓慢。对于任何正常的操作(即使对于最终用户来说似乎是正常的),我们也应该非常小心,将响应时间保持在100毫秒以下。

因此,对您的问题的答案是,是否按需存储或计算取决于需求。

但是您上面提到的文件似乎并不占用资源,因此可以只是model property