【问题标题】:Scaling a follower model缩放追随者模型
【发布时间】:2010-12-14 16:05:52
【问题描述】:
这个问题有点类似于 twitter/facebook 的问题:
随后您会看到您关注的所有人添加的项目。
问题 A:如何保持对您关注的人添加的项目的查询在不断增长的数据集上运行良好?
问题 B:我们看到流量在地理上分散。荷兰和巴西的庞大用户群。任何解决方案都可能需要允许跨多个数据中心的数据库。
我们在 django/python 堆栈上运行。已经在运行边缘服务器缓存。 (匿名用户获取缓存版本,登录用户版本先通过二级模板解析服务运行)
【问题讨论】:
标签:
python
django
nosql
scaling
partitioning
【解决方案1】:
问题 A:如何保持对您关注的人添加的项目的查询在不断增长的数据集上运行良好?
从(谁是我的追随者/我在追随谁)的数据集开始;可以将这些值保存为元组并在多个 SQL 数据库中对其进行分段(尽管我怀疑即使对于 twitter 大小的数据库也确实需要真正的分段)。这将给出被关注的人的列表。其次,按照follower排序的follower->items表可以很容易地查询;如果需要,还可以根据庞大的数据集进行分段。
问题 B:我们看到流量在地理上分散。荷兰和巴西的庞大用户群。任何解决方案都可能需要允许跨多个数据中心的数据库。
可以指定一个主数据库(集群)和一个从数据库(集群),并将数据从主数据库复制到从数据库。但是,这确实意味着数据总是保存到主数据库中。数据查询可以在本地完成。
另一种选择是在主-主设置中运行数据库(集群);但这通常比值得更麻烦。