Database 评论文章可伸缩性:每个用户排名前n,1次更新,大量阅读
情况是这样的。数百万用户的网站。每个用户的页面都有一个消息部分。任何人都可以访问用户页面,在那里他们可以留言或查看最后100条消息 消息是包含一些额外元数据的短文本。每条消息都必须永久存储,唯一必须实时快速的是消息更新和阅读(人们将其用作聊天)。将经常读取大量消息以检查更改。定期归档旧消息(那些>100)是可以的,但它们必须是可访问的 目前,所有这些都集中在一个大型数据库表中,阅读消息列表和发送更多更新的人之间的争用正在成为一个问题Database 评论文章可伸缩性:每个用户排名前n,1次更新,大量阅读,database,scalability,message-queue,Database,Scalability,Message Queue,情况是这样的。数百万用户的网站。每个用户的页面都有一个消息部分。任何人都可以访问用户页面,在那里他们可以留言或查看最后100条消息 消息是包含一些额外元数据的短文本。每条消息都必须永久存储,唯一必须实时快速的是消息更新和阅读(人们将其用作聊天)。将经常读取大量消息以检查更改。定期归档旧消息(那些>100)是可以的,但它们必须是可访问的 目前,所有这些都集中在一个大型数据库表中,阅读消息列表和发送更多更新的人之间的争用正在成为一个问题 如果必须重新构建系统,您会使用什么存储机制/缓存?这里可以使用
如果必须重新构建系统,您会使用什么存储机制/缓存?这里可以使用什么样的计算机科学学习?(例如集合、列表访问等)一个简单的解决方案是将数据反规范化,并将预先计算的聚合存储在单独的表中,例如,一个消息计数表,其中有一列表示用户ID,另一列表示其消息计数。更新主消息表后,重新计算聚合
它只是将瓶颈从一个地方转移到另一个地方,但它可能会将瓶颈转移到一个负担较小的地方。一些一般的想法,而不是特定的技术:
谢谢你的回答。我们已经使用memcached incr/decr来存储计数。问题更多的是更新/插入之间的争论。在不了解您的环境的情况下,很难推荐体系结构解决方案。