Mysql 在构建活动提要时,为什么要扇出
我正在研究构建活动提要的逻辑,类似于Facebook或Twitter的时间线 在StackOverlfow和Quora以及我在google上找到的其他文章中,有大量的答案,这些文章描述了在读写时呈扇形展开。这一切都有道理。您将所有活动记录在一个主活动表/集合中,然后在某个时候,将该数据的副本写入每个用户的单独、适当的表中 我不完全理解的是为什么需要扇出?也就是说,为什么需要在单个用户提要上记录活动?您是否有理由不能只使用一个活动表/集合?它将具有适当的索引,并具有代理用户的ID。然后,当有人想要查看他们的活动流时,只需查询当前用户正在跟踪的用户的活动流 我知道这可能没有那么有效,因为数据库中活动的数量比实际对象的数量多好几倍。也就是说,一个数据库中可能有100个POST,但POST上有1000多个操作,因此当行号非常高时,活动表/集合上的查询可能会很慢Mysql 在构建活动提要时,为什么要扇出,mysql,database,feed,nosql,Mysql,Database,Feed,Nosql,我正在研究构建活动提要的逻辑,类似于Facebook或Twitter的时间线 在StackOverlfow和Quora以及我在google上找到的其他文章中,有大量的答案,这些文章描述了在读写时呈扇形展开。这一切都有道理。您将所有活动记录在一个主活动表/集合中,然后在某个时候,将该数据的副本写入每个用户的单独、适当的表中 我不完全理解的是为什么需要扇出?也就是说,为什么需要在单个用户提要上记录活动?您是否有理由不能只使用一个活动表/集合?它将具有适当的索引,并具有代理用户的ID。然后,当有人想要
但这不管用吗?你不能扩展数据库以便它能更有效地处理查询吗?真的需要扇出吗?没有必要总是扇出,但决定取决于许多因素 例如,Twitter两者兼而有之,但Facebook则在加载后展开扇形搜索 可以想象,Facebook的活动流要比Twitter复杂得多。FB需要在每个用户/组的基础上应用大量过滤器/隐私设置,因此他们可以动态地拉取和构建流。他们在MySQL+缓存之上绘制的TAO图形基础设施使他们能够轻松地为每个用户快速构建和获取提要