use*_*382 0 notifications facebook ruby-on-rails social-networking
我正在实施一个小型社交网站,我正在尝试实施通知.
通知具有以下要求
以下是我想用MySQL实现它的方法:
通知表:type_of_event,event_id,message
Notification_read表:user_id,notification_id,read
Notification表中Notification_read表格将填写新创建的通知,其中包含新通知的ID和应接收通知的每个用户的ID(通知创建者的关注者)read这个解决方案对我来说似乎效率很低,因为每次发生通知时,通知都会notification_read多次写入表中(取决于用户拥有多少关注者)
有人能告诉我是否有更好的解决方案来解决这个问题
在这些问题中,权衡通常是读取与写入.
在这种情况下,写入可以表示将通知写入数据库所花费的时间和存储成本.
对于阅读,它是关于您为特定用户获取通知的速度有多快.
在@kecebongsoft的示例中,您在写入时非常有效(因为相对较少的字段)但是读取需要花费大量时间.在数据库的文本字段中搜索通常很慢.对于用户,如果列出了用户,则必须检查所有通知及其检查字段,如果是,则状态是什么.
通过为每个用户存储单独的通知,可以增加存储空间,但是您在阅读方面获得了很多收益.也就是说,因为您可以使用用户ID搜索索引表,并快速查找任何通知及其状态.
当然,有非常复杂的混合方法.但一般来说,大网站不喜欢告诉这些秘密:)
如果您从一个网站开始,我不会担心写作成本.使用许多通知填充表格并不昂贵.最后,他们可能都相对较小.你甚至可以考虑修剪旧的通知.
更重要的是阅读速度.发现您网站的人不会对您的高效存储适配器留下深刻印象,但会在收到通知时注意到照明速度.
我的建议:现在重点关注读取速度,以及何时扩展存储效率.
最后一点:如果您在创建通知时创建了大量数据库条目,请查看从主Web服务器线程调度的解决方案.这样,创建通知的人可以快速继续,您可以在后台执行昂贵的SQL工作.速度更快!
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |