【发布时间】:2010-11-21 21:46:02
【问题描述】:
我正在开发一个将使用社交网络功能的网站(例如 facebook)。
我想实现一个通知系统,它显示诸如“X 加你为朋友”、“Y 邀请你参加聚会”、“Z 参加了最新的测验”之类的内容......我不知道怎么办。
我想知道最好的解决方案是什么:
- 解决方案 1,又称“日志记录”。
专用表“通知”。每次发生通知(添加朋友、回答测验等)时,我都会在此表中添加行。表“通知”具有包含不同信息的字段,根据添加到表中的通知类型。
好:易于编码,通知功能和“普通”功能分开,当我需要阅读表格时不会消耗太多资源。
不好:通知表可能会变得非常大(我想我会在表中添加 10k 行/天),“重复”信息:通知表中的信息可以在所有其他中找到使用日期/列表/任何比较的表格。
- 解决方案 2,又称“到处寻找”。
每次我需要显示通知列表或显示有多少新通知时,我都会查看所有相关表格,比较日期/等以了解自用户上次检查通知以来是否发生了新情况。
好:与解决方案 1 相比,表格不是太大,没有“冗余”信息。
不好:我很害怕,因为用户数量(~1k+),它使服务器爆炸,因为它是资源/时间消耗,编码/维护有点困难。
你能告诉我你认为什么更好以及为什么,或者你有一个我没有想到的解决方案吗?
谢谢 =)
编辑: 假设我使用了一个非常基本的数据库设计:用户有朋友,可以做测验。
1个表格用于用户列表,测验列表,
1 表测验用户关系,
1 个表用户友谊用户。
每次用户访问自己的个人资料时,他都可以看到发生了什么:新测验用户关系,新用户用户关系等。 你会如何设计这样的通知?
【问题讨论】:
标签: design-patterns database-design