mysql - 如何为社交应用实现可扩展的通知系统?
问题描述
我正在为另一个社交类型应用程序开发通知系统。它有帖子、评论和其他几个功能等,我目前的实现是这样的,
我有每个对象的不同通知表(总共 6 个表)(post_notif、comment_notif 等)每个表存储 notif_id、to_user、from_user、类型(喜欢、收藏等)、object_id、...、created_at 等。
每个表都有超过 4 个索引,因为查询中将连接多个外键(每个查询最少 4 个 JOINS)。
使用 union all 查询所有 6 个表,例如
SELECT col_a, col_b..
UNION ALL
SELECT col_a, col_b..
UNION ALL..
...
我需要通知来更新可能会更新的对象的任何更改,以便它反映在用户看到的通知中(例如,'Johnny 评论:“太棒了!”,'Johnny 评论:“太棒了。”)是在通知检索中为具有外键和联合所有对象的单独表的推理。
我正在使用 MySql,ID 是从票务服务器生成的,如果有帮助,我将使用 NodeJs 作为 api 前端。
我的问题是
在我看来,随着应用程序的扩展,这将是非常低效的,我正在寻找是否有更好的方法或更有效的方法来做到这一点。
解决方案
推荐阅读
- scala - Scala:进行柯里化时的函数声明
- javascript - 用browserify编译反应,babel说:ReferenceError:React未定义
- android - Snackbar 持续时间在某些设备上无法正常工作
- c++ - 构建用于函数的类型列表
- c - 我怎样才能找到任何字符的立即重复?
- django - Django Rest Framework:无法从给定的令牌中获取用户 ID
- ms-access - Access 将数字并排书写,而不是相加
- excel - Excel VBA中的刽子手
- javascript - Javascript中的测验生成器和随机化
- php - MySQL根据第一行加载数据