我想做一个表,用户跟随其他用户。在这个表中,我需要以下用户的userid和以下用户的userid。如果有一些用户被成千上万的用户跟踪,那么它就太大了,无法有效地将它们存储在一个集合中。
一个用户的所有追随者都不在同一个分区中,我该如何建模呢?在意识到这个问题之前,我想使用下面的用户id或者后面的用户id作为分区键,但是应该有一个热分区问题。
我可以使用一个复合分区键来解决热分区问题吗?还有什么可以挽救这个问题?
我的两个主要查询是获取一个用户的所有关注用户和一个用户的所有关注用户。如果我使用带有这两个id的复合分区键,我甚至可以查询上面的内容吗?或者我需要用两个ID进行查询,所以这是不可能的?
谢谢你的帮助。
2条答案
按热度按时间jutyujz01#
你应该看看bucketing解决方案。在bucketing中,引入一个额外的键作为分区键的一部分。例如,您可以使用这样的数据模型
这里user\u id和bucket\u id是分区键。要找到所有分区,您应该事先知道bucket的id。
uyto3xhc2#
这是社交图中的一个常见问题,在社交图中,某些人物的追随者比其他人多数百万。我倾向于以泰勒·斯威夫特和巴拉克·奥巴马为例。
很多社交平台通过将超级节点隔离在单独的数据存储中来处理这个问题,这样当有人遍历超级节点时,主存储就不会排队。
这意味着您需要在应用程序中处理此问题,以便应用程序需要根据超级用户/超级节点的引用表检查用户,这样它就可以在子表而不是主表中进行查找。干杯!