【发布时间】:2015-10-24 06:51:48
【问题描述】:
假设我有一个用户模型和一个收藏模型。我想知道一个用户有多少个收藏夹。
我发现您可以通过两种方式完成此操作。
在创建收藏夹时自动递增用户模型上的计数器属性。使用
user_instance.favorite_count访问查询用户收藏次数:
user_instance.favorite_set.count()
我想随着数据库的增长,计数变得更加昂贵。
哪种实现更具可扩展性?
【问题讨论】:
-
3.添加一个
favorite_count实例方法,该方法只调用favorite_set.count(),并在出现问题时将其替换为计数器。模型可以有方法吗?它们不必是简单的柱袋。 -
@muistooshort 这样做和打电话给
user_instance.favorite_set.count()有什么区别?他们调用的是同一个东西,所以这似乎是多余的。 -
不同之处在于您将选择的实现隐藏在方法后面。你可以改变你对你的实现的想法(缓存计数器与数据库查询),使用你的模型的任何东西都不会关心。
-
@muistooshort 我现在看到了 - 这是个好主意!
标签: sql django postgresql relational-database scalability