消息传递应用程序的未读消息计数实现

问题描述

我正在构建一个简单的消息传递应用程序。我坚持为其实现未读计数实现。我有一些主意。我需要肯定的是,我在朝着正确的方向思考或我的方法存在任何牵强的问题。

message.table

{
  id: int,text: string,inBoxId: "...",createdOn: epochMs,updatedOn: epochMs,deletedOn: epochMs
}

要实现未读消息计数,我正在考虑保留一个辅助表,该表将保留上次读取的游标值(最后由用户读取时创建)。

read_cursors.table

{
  userId: "...",lastReadCursor: "..."
}

应用程序将使用计算未读计数

SELECT message(id) from message where message(createdOn) > read_cursors(lastReadCursor);

这样,整个请求的性能将取决于此SQL查询性能

我了解您需要在邮件(createdOn)上创建索引。这将在数​​据库上产生额外的空间成本。如果我不创建索引(节省空间),则可以在不影响性能的情况下(即缓存未读计数)使用查询进行操作。

也愿意了解替代模型。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)