我有一个用例,我需要存储大量具有每个条目的唯一设置大小的条目。如果我们将这简化为联系人(问题非常多)。我们会遇到类似的问题:
如果用户知道他们有多少朋友:
乔 - 玛丽,约翰,鲍勃,汤姆
玛丽 - Carol,Suzy,Mike,Fred,Robert
因此friends(Joe) = 4
- 支持的唯一操作是addFriend(Joe, Sam)
。虽然Mary可能是Joe的朋友,但不需要存储任何相关信息。
我不想做的是存储每个集合中的所有条目,但是布隆过滤器不太合适。还有其他选择吗?
更新:挑战在于我在顶级套装中拥有20M Joe / Mary / ...每组中有4M半不同成员。快速代码示例如下(为简单起见,python) - 但是在规模+持久存储中,宇宙结束了。
class World:
def __init__(self):
self.friends = defaultdict(set)
def addFriend(self, id, member):
self.friends[id].add(member)
def friends(self, id):
return len(friends[id])