您如何协调DRY原则与数据库效率?

时间:2014-04-04 02:49:12

标签: database performance dry

我将在我的代码片段中使用Python并引用Django文档,但此问题旨在与语言无关

来自Django教程:

  

模型是关于数据的单一,权威的数据来源。它包含您要存储的数据的基本字段和行为。 Django遵循DRY原则。目标是在一个地方定义您的数据模型,并自动从中获取数据。

接着说

  

它应该尽可能少地执行SQ​​L语句,并且应该在内部优化语句。

我们如何调和这两种设计理念?为了探讨这种情况,我们假设我们有一个表格来表示个人资料。我们的数据模型中还有一个函数get_profile(profile_id),它执行以下操作:

  • 从数据库中检索行
  • 执行一些计算以生成其他属性
  • 将此处理过的记录作为Canonical Profile Representation
  • 返回

接下来,我们发现我们还需要一个get_profiles(list_of_profile_ids)函数。根据我的理解,DRY原则将强制执行

function get_profiles(list_of_profile_ids):
    profiles = []
    for profile_id in list_of_profile_ids:
        profiles.append(get_profile(profile_id))
    return profiles

如果我们的profile_id列表很长,我们现在正在执行许多单独的数据库查询。与对profile_id in (id1, id2, id3)执行单个数据库查询然后在每行执行相同计算的函数相比,这不是非常低效吗?

如何协调DRY以保持执行效率?

0 个答案:

没有答案