我要构建一个Symfony 2.1应用程序,它需要知道项目的状态(读取/未读取),是否有任何有效的方法来保存项目状态(包含许多项目)?使用SQL关系表保持最佳选择?或者像MongoDB这样的NoSQL数据库是处理读/未读状态的更好主意吗?
答案 0 :(得分:1)
准确管理(即没有偷工减料)的最佳方法是关联表。假设您的数据库包含项和用户,请按如下方式构建另一个表:
item_users (id, user_id, item_id, time_added)
其中存在的任何字段(用户和项目的组合)被视为"用户已阅读此内容"。这将生成大量数据,但可以通过巧妙的索引/分片轻松处理。例如:
这将使您可以非常轻松地查询表格。请记住,如果您有大量用户和帖子,您的数据可能会变大,此时必须进行分片。