我的安卓应用程序使用MySQL后端,使用PHP API。该应用程序允许读者跟踪不同的作者,并在他们所跟踪的作者之一提交一篇文章时获得通知。
现在,我正在通过为每个作者的追随者存储一个新的记录来做到这一点。例如:如果有1000名关注者的作者提交了一篇文章,它会添加1000个新行,其中seen
列设置为FALSE
。
现在,当移动应用程序请求不可见的通知时,我可以只显示这些记录,将seen
设置为TRUE
。
然而,这在某种程度上是困难的。例如,一群拥有300k+追随者的作者将创建大量行。
难道这只是一个制度的成本吗?或者,是否有更有效的方法来处理这个问题,也许是从应用程序的角度?
Table : posts (Only the relevant columns)
-------------
id : INT(10) PK,NN,AI
author_id : INT(10) NN,UN
Table : followers
-----------------
id : INT(10) PK,NN,AI
author_id : INT(10) NN,UN
user_id : INT(10) NN,UN
Table : notifications
---------------------
id : INT(10) PK,NN,AI
user_id : INT(10) NN,UN
author_id : INT(10) NN,UN
seen : VARCHAR(1) NN
一些表注:
followers
表中创建一个新行,其中包含读取器的user_id
和被订阅者的author_id
。任意点的行总数将等于所有用户的追随者计数之和。notifications
表中为他们的每个追随者创建一个新行,并将seen
列设置为FALSE
。然后,该应用程序发送另一个电话,以标记他们看到的。做这项工作,但是大量的数据会不断地被添加进来。notifications
表中与当前用户相关的所有未见行。发布于 2015-05-26 08:38:57
有很多方法可以让你做得更好。这里有一个简单的方法-你可以使用时间戳。跟踪用户上次请求通知的时间。然后,当他们下一次请求通知时,用时间戳查询所有的文章。这是他的通知。需要每个用户1行,或每个用户1列,这取决于您是否创建了一个新表,或者仅仅为一个新列进行了最后一次检查。
https://stackoverflow.com/questions/30453454
复制相似问题