Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在构建活动提要时,为什么要扇出_Mysql_Database_Feed_Nosql - Fatal编程技术网

Mysql 在构建活动提要时,为什么要扇出

Mysql 在构建活动提要时,为什么要扇出,mysql,database,feed,nosql,Mysql,Database,Feed,Nosql,我正在研究构建活动提要的逻辑,类似于Facebook或Twitter的时间线 在StackOverlfow和Quora以及我在google上找到的其他文章中,有大量的答案,这些文章描述了在读写时呈扇形展开。这一切都有道理。您将所有活动记录在一个主活动表/集合中,然后在某个时候,将该数据的副本写入每个用户的单独、适当的表中 我不完全理解的是为什么需要扇出?也就是说,为什么需要在单个用户提要上记录活动?您是否有理由不能只使用一个活动表/集合?它将具有适当的索引,并具有代理用户的ID。然后,当有人想要

我正在研究构建活动提要的逻辑,类似于Facebook或Twitter的时间线

在StackOverlfow和Quora以及我在google上找到的其他文章中,有大量的答案,这些文章描述了在读写时呈扇形展开。这一切都有道理。您将所有活动记录在一个主活动表/集合中,然后在某个时候,将该数据的副本写入每个用户的单独、适当的表中

我不完全理解的是为什么需要扇出?也就是说,为什么需要在单个用户提要上记录活动?您是否有理由不能只使用一个活动表/集合?它将具有适当的索引,并具有代理用户的ID。然后,当有人想要查看他们的活动流时,只需查询当前用户正在跟踪的用户的活动流

我知道这可能没有那么有效,因为数据库中活动的数量比实际对象的数量多好几倍。也就是说,一个数据库中可能有100个POST,但POST上有1000多个操作,因此当行号非常高时,活动表/集合上的查询可能会很慢


但这不管用吗?你不能扩展数据库以便它能更有效地处理查询吗?真的需要扇出吗?

没有必要总是扇出,但决定取决于许多因素

例如,Twitter两者兼而有之,但Facebook则在加载后展开扇形搜索

可以想象,Facebook的活动流要比Twitter复杂得多。FB需要在每个用户/组的基础上应用大量过滤器/隐私设置,因此他们可以动态地拉取和构建流。他们在MySQL+缓存之上绘制的TAO图形基础设施使他们能够轻松地为每个用户快速构建和获取提要