我正在创建一个社交网络应用程序,我将非规范化数据创建时间轴作为包含所有字段的帖子列表,以便只使用一个查询.问题是,如果每个帖子都有计数器(喜欢,分享,评论),每次更新计数器时如何在时间线中同步所有帖子记录?或者我应该只在时间轴中有id,所以我只更新一个帖子表,时间线查询由两个查询而不是一个查询组成?
谢谢你的问候
最佳答案 我一直在考虑类似的任务,这是我的想法:
>必须同步时间轴数据.仅在时间轴中存储id并在帖子中查找是一个坏主意:您不希望进行20次查找以生成单个时间轴页面.此外,它不会扩展:一旦您向服务器体系结构添加更多节点,不同的帖子可以存储在不同的节点上,这将使查询更慢.
>最好是使用计数器数据类型来存储计数器.这需要创建一个单独的仅计数器表. See here获取更多信息.据我所知,使用此类型可以提高可扩展性(更新).
>如果写入时间轴时每个新的like / comment / share变得过于昂贵,则可以使用内存缓存:计数器存储在缓存中并在生成时间线时查找.然后可以延迟时间轴存储值更新,并将其用作不在高速缓存中的计数器的回退.我认为,单个请求从RAM中查找20次是可以的.
如果计算条目视图,#3会很有用.由于您不计算视图,因此我认为更新每个喜欢/评论/分享的时间表是正常的.