Data structures 通知的数据库表结构,如社交网站的表

Data structures 通知的数据库表结构,如社交网站的表,data-structures,database-design,notifications,Data Structures,Database Design,Notifications,我正在开发一个像Facebook这样的社交网站。我不知道如何创建通知表的结构。在频繁添加和删除记录的情况下,是每个用户单独使用还是所有用户都使用大型表?我和您有相同的问题,在研究给出的表结构的位置时发现: id user_id (int) activity_type (tinyint) source_id (int) parent_id (int) parent_type (tinyint) time (dateti

我正在开发一个像Facebook这样的社交网站。我不知道如何创建通知表的结构。在频繁添加和删除记录的情况下,是每个用户单独使用还是所有用户都使用大型表?

我和您有相同的问题,在研究给出的表结构的位置时发现:

id             
user_id       (int)
activity_type (tinyint)
source_id     (int)  
parent_id     (int)
parent_type   (tinyint)
time          (datetime but a smaller type like int would be better) 
其中:

活动类型告诉我活动的类型,源id告诉我活动相关的记录。因此,如果活动类型的意思是“添加收藏夹”,那么我知道源id指的是收藏夹记录的id

家长id/家长类型对我的应用程序很有用-他们告诉我活动与什么相关。如果喜欢某本书,那么parent\u id/parent\u type会告诉我该活动与具有给定主键(id)的书(type)相关

我索引(用户id,时间)并查询在(…朋友…)和时间中属于用户id的活动。放弃id并选择不同的聚集索引可能是个好主意——我还没有尝试过

非常基本的东西,但它是有效的,它很简单,并且随着你需求的变化很容易使用。此外,如果您不使用MySQL,您可能可以在索引方面做得更好

它还建议在那里使用,以便更快地访问最新的活动。 在混合使用Redis的情况下,其工作原理可能如下:

  • 创建您的MySQL活动记录
  • 对于创建活动的用户的每个朋友,将ID推送到他们在Redis中的活动列表上
  • 将每个列表修剪到最后X个项目
Redis速度很快,并且提供了一种跨一个连接传递命令的方法——因此将一个活动推送到1000个好友需要几毫秒的时间

有关我所说内容的更详细解释,请参阅Redis的Twitter示例:


我希望这也能对你有所帮助

到目前为止,我已经创建了帖子、个人资料和照片等表格。但我对通知感到困惑。看,我有两种想法-1。每个用户的小通知表和存储所有通知的大表。例如,非11(身份证,非身份证)。通知主机(notf_id、memid、notif_text、dttime)。这样,我将一直更新这两个表。只要用户在其表格中的日志被引用,就会显示notifi。你说什么?有人回答吗?仅仅给出一个链接引用作为回答是不好的。如果链接被更改/更新/编辑/删除,答案将自动失效。因此,请始终尝试解释答案,然后给出参考。