Database 以适度可扩展的方式交付活动提要项
我正在开发的应用程序有一个活动提要,每个用户都可以在这里看到他们朋友的活动(很像Facebook)。我正在寻找一种适度可伸缩的方式来动态显示给定用户的活动流。我之所以说“适度”,是因为我希望只使用一个数据库(Postgresql)和memcached。例如,我希望此解决方案扩展到20万用户,每个用户有100个朋友 目前,有一个主活动表存储给定活动的呈现html(Jim添加了一个朋友,George安装了一个应用程序等)。此主活动表保存源用户、html和时间戳 然后,有一个单独的('join')表,它只保留一个指向应该在其好友提要中查看此活动的人的指针,以及一个指向主活动表中的对象的指针 因此,如果我有100个朋友,并且我做了3项活动,那么join表将增长到300项 很明显,这张桌子将快速增长。不过,它有一个很好的特性,即要向用户显示的获取活动只需要一个(相对)便宜的查询 另一个选项是只保留主活动表,并通过如下方式进行查询:Database 以适度可扩展的方式交付活动提要项,database,database-design,social-networking,Database,Database Design,Social Networking,我正在开发的应用程序有一个活动提要,每个用户都可以在这里看到他们朋友的活动(很像Facebook)。我正在寻找一种适度可伸缩的方式来动态显示给定用户的活动流。我之所以说“适度”,是因为我希望只使用一个数据库(Postgresql)和memcached。例如,我希望此解决方案扩展到20万用户,每个用户有100个朋友 目前,有一个主活动表存储给定活动的呈现html(Jim添加了一个朋友,George安装了一个应用程序等)。此主活动表保存源用户、html和时间戳 然后,有一个单独的('join')表,
select * from activity where source_user in (1, 2, 44, 2423, ... my friend list)
这样做的缺点是,您查询的用户可能永远不会处于活动状态,并且随着好友列表的增长,此查询可能会越来越慢
我看到了双方的优点和缺点,但我想知道是否有人可以帮我权衡各种选择,并提出一种或另一种方法。我也对其他解决方案持开放态度,不过我希望保持简单,不要安装CouchDB之类的东西
非常感谢 我倾向于只使用主活动表。如果你同意的话,这就是我要考虑的:
select * from activity
where ts <= 123456789
and source_user in (1, 2, 44, 2423, ... my friend list)
从活动中选择*
ts在哪里