【问题标题】:Django/SQL: keeping track of who who read what in a forumDjango/SQL:跟踪谁在论坛中阅读了什么
【发布时间】:2009-11-08 16:24:29
【问题描述】:

我正在 django 中进行一个不太大的项目,其中包括一个论坛系统。

我的大部分系统或多或少都处于正常运行状态,但我仍然缺少一个功能,可以在有新帖子时为用户标记未读线程。

问题是我真的想不出正确存储这些信息的方法。我的第一个想法是创建另一个模型,该模型将存储一个线程列表,其中包含每个用户的更改。有一个 ForeignKey(User) 和一个 ForeignKey(Thread) 的东西,每次发布线程或将帖子添加到线程时都会不断添加新条目。

但是,我不确定一段时间后如果有几百个线程,可能会有 50 到 200 个用户,这将如何扩展。那么为未登录用户的每个新帖子添加 200 行?听起来很多。

其他论坛系统如何做到这一点?以及如何在 Django 中实现一个系统来解决这些问题。

谢谢!

【问题讨论】:

    标签: python sql django database-design database


    【解决方案1】:

    最好存储“已读”位,而不是“未读”位。您可以不将它们存储为关系数据,而是存储在一个巨大的位块中。那么你在添加新帖子时根本不需要修改读取数据,只有在用户阅读帖子时。

    【讨论】:

    • 你能举个例子吗?无论如何,你所说的 bit-blob 是什么意思?
    • 例如,如果您的帖子被赋予递增的整数 id,那么您可以通过存储一个大的二进制 blob 来记录哪些帖子已被读取,其中每个位都是帖子的读取位。将其存储在用户记录中,并在用户阅读帖子时更新 blob。
    • 已经做了一段时间了。不幸的是,我遇到了 unicode 问题。由于某种原因,我真的找不到 blob 字段,“文本”是最近的选项(但有这些 un​​icode 问题)
    【解决方案2】:

    您也可以简单地存储用户上次阅读特定论坛的时间。自该日期以来更新的任何帖子都是新的。您只会为每个用户存储一条额外的信息,而不是每个用户的每个帖子一条信息。

    【讨论】:

    • 一开始并没有完全按照我的意愿做,但我想它必须是它。
    猜你喜欢
    • 2010-10-26
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    相关资源
    最近更新 更多