我要构建一个 Symfony 2.1 应用程序,它需要知道项目的状态(已读/未读),是否有任何有效的方法来保存项目状态(有很多项目)?使用 SQL 关系表留最佳选择?或者也许像 MongoDB 这样的 NoSQL 数据库是处理已读/未读状态的更好主意?
问问题
437 次
1 回答
1
准确管理这一点(即不走捷径)的最佳方法是关联表。假设您的数据库包含items和users,请按如下方式构建另一个表:
item_users (id, user_id, item_id, time_added)
那里存在的任何字段(用户和项目的组合)都被视为“用户已阅读此内容”。这将生成大量数据,但可以通过巧妙的索引/分片轻松处理。例如:
- 如果你有很多用户和很多项目,用户分片可能是最好的
- 如果你经常对谁读过某个帖子感兴趣,那么按项目分片也是值得的
- 考虑分别索引 user_id 和 index_id(INDEX + FOREIGN KEY 和 UPDATE 和 DELETE 级联)
这将允许您非常轻松地查询表。请记住,如果您有很多用户和帖子,您的数据可能会变得很大,此时分片确实变得很有必要。
于 2013-03-29T14:57:27.147 回答