由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 一个system design题:content feed
相关主题
[bssd]Get a lifepointer overflow
Why do I need to use "plain" pointer?about STL functor and function pointers
一个简单的小问题what's the purpose of pointer to pointers?
请问可以这样定义struct吗?C++ Q05: pointer to constant variable
any php experts?find start point of loop from linked list
how to do it ?=======Problem – coding in c++C++ Q93 - Q95 (转载)
is smart_ptr really that good?c++ pointers are iterators, why?
[合集] pointer in Cint F::*x = &F::x是什么意思?
相关话题的讨论汇总
话题: feed话题: table话题: content话题: entry话题: design
进入Programming版参与讨论
1 (共1页)
f******2
发帖数: 2455
1
如何实现一个类似fb的friend status feed的系统(twitter的feed其实也是这么回事
,把你follow的人的新tweet显示到你的homepag上)
我有个naive的方法,但是感觉非常不efficient,先抛砖引玉。
1. 搞个用户表,叫user table吧,每个用户的row上有一个field叫“who is
following me”,(是一个list)当有人follow我的时候,把那人加到这个field
的list 尾部。
2. 搞另外一个表,叫feed table吧,chronically记录每个人的feed里面应该显示什么
。存pointer而不是content,以节省空间,pointer指向content table(见3)的entry
3.再搞个content table,存真正的内容。
每当我发推/文的时候,先把内容写到contnet table里,然后按照“who is
following me”那个list,往那些follow我的人的feed table entry里面append
一个pointer
请问,这个设计还有可以优化的地方吗?twitter/facebook/Tumblr/Pinterest什么的
是这么实现的吗?
w********m
发帖数: 1137
2
pull based 比较好吧

entry

【在 f******2 的大作中提到】
: 如何实现一个类似fb的friend status feed的系统(twitter的feed其实也是这么回事
: ,把你follow的人的新tweet显示到你的homepag上)
: 我有个naive的方法,但是感觉非常不efficient,先抛砖引玉。
: 1. 搞个用户表,叫user table吧,每个用户的row上有一个field叫“who is
: following me”,(是一个list)当有人follow我的时候,把那人加到这个field
: 的list 尾部。
: 2. 搞另外一个表,叫feed table吧,chronically记录每个人的feed里面应该显示什么
: 。存pointer而不是content,以节省空间,pointer指向content table(见3)的entry
: 3.再搞个content table,存真正的内容。
: 每当我发推/文的时候,先把内容写到contnet table里,然后按照“who is

f******2
发帖数: 2455
3
能说的详细些吗?......


: pull based 比较好吧

: entry



【在 w********m 的大作中提到】
: pull based 比较好吧
:
: entry

w********m
发帖数: 1137
4
按你的想法,打个比方,你是一个10m follower的大v。
你一发推,就是10m的push,换成10m的写操作。
万一心情好了,你一天发1k的推,系统就不大好了。
还是用户自己拉比较好。

【在 f******2 的大作中提到】
: 能说的详细些吗?......
:
:
: pull based 比较好吧
:
: entry
:

C********9
发帖数: 670
5
pull model和push model 网上有很详细的资料
f******2
发帖数: 2455
6
如何实现一个类似fb的friend status feed的系统(twitter的feed其实也是这么回事
,把你follow的人的新tweet显示到你的homepag上)
我有个naive的方法,但是感觉非常不efficient,先抛砖引玉。
1. 搞个用户表,叫user table吧,每个用户的row上有一个field叫“who is
following me”,(是一个list)当有人follow我的时候,把那人加到这个field
的list 尾部。
2. 搞另外一个表,叫feed table吧,chronically记录每个人的feed里面应该显示什么
。存pointer而不是content,以节省空间,pointer指向content table(见3)的entry
3.再搞个content table,存真正的内容。
每当我发推/文的时候,先把内容写到contnet table里,然后按照“who is
following me”那个list,往那些follow我的人的feed table entry里面append
一个pointer
请问,这个设计还有可以优化的地方吗?twitter/facebook/Tumblr/Pinterest什么的
是这么实现的吗?
w********m
发帖数: 1137
7
pull based 比较好吧

entry

【在 f******2 的大作中提到】
: 如何实现一个类似fb的friend status feed的系统(twitter的feed其实也是这么回事
: ,把你follow的人的新tweet显示到你的homepag上)
: 我有个naive的方法,但是感觉非常不efficient,先抛砖引玉。
: 1. 搞个用户表,叫user table吧,每个用户的row上有一个field叫“who is
: following me”,(是一个list)当有人follow我的时候,把那人加到这个field
: 的list 尾部。
: 2. 搞另外一个表,叫feed table吧,chronically记录每个人的feed里面应该显示什么
: 。存pointer而不是content,以节省空间,pointer指向content table(见3)的entry
: 3.再搞个content table,存真正的内容。
: 每当我发推/文的时候,先把内容写到contnet table里,然后按照“who is

f******2
发帖数: 2455
8
能说的详细些吗?......


: pull based 比较好吧

: entry



【在 w********m 的大作中提到】
: pull based 比较好吧
:
: entry

w********m
发帖数: 1137
9
按你的想法,打个比方,你是一个10m follower的大v。
你一发推,就是10m的push,换成10m的写操作。
万一心情好了,你一天发1k的推,系统就不大好了。
还是用户自己拉比较好。

【在 f******2 的大作中提到】
: 能说的详细些吗?......
:
:
: pull based 比较好吧
:
: entry
:

C********9
发帖数: 670
10
pull model和push model 网上有很详细的资料
相关主题
how to do it ?=======Problem – coding in c++pointer overflow
is smart_ptr really that good?about STL functor and function pointers
[合集] pointer in Cwhat's the purpose of pointer to pointers?
进入Programming版参与讨论
f******2
发帖数: 2455
11
高人,请给个链接。
正在做一个toy project,谢谢


: pull model和push model 网上有很详细的资料



【在 C********9 的大作中提到】
: pull model和push model 网上有很详细的资料
c*********e
发帖数: 16335
12
你是database developer吧?

entry

【在 f******2 的大作中提到】
: 如何实现一个类似fb的friend status feed的系统(twitter的feed其实也是这么回事
: ,把你follow的人的新tweet显示到你的homepag上)
: 我有个naive的方法,但是感觉非常不efficient,先抛砖引玉。
: 1. 搞个用户表,叫user table吧,每个用户的row上有一个field叫“who is
: following me”,(是一个list)当有人follow我的时候,把那人加到这个field
: 的list 尾部。
: 2. 搞另外一个表,叫feed table吧,chronically记录每个人的feed里面应该显示什么
: 。存pointer而不是content,以节省空间,pointer指向content table(见3)的entry
: 3.再搞个content table,存真正的内容。
: 每当我发推/文的时候,先把内容写到contnet table里,然后按照“who is

u********s
发帖数: 1047
13
看情况吧,比如twitter大部分人都是读不是发推。而且一个人一天刷新100次的几率比
发100 tweets的几率大多了。这时候每个用户都去pull就比较蛋疼了

【在 w********m 的大作中提到】
: 按你的想法,打个比方,你是一个10m follower的大v。
: 你一发推,就是10m的push,换成10m的写操作。
: 万一心情好了,你一天发1k的推,系统就不大好了。
: 还是用户自己拉比较好。

r********e
发帖数: 39
14
看 high scalability web site啊,有许多基于real life的 design sample 文档
http://highscalability.com/display/Search?moduleId=4876569&searchQuery=feed
看完了后给大家讲讲你的选择,感觉在不同的traffic volume阶段有不同的答案。
g*********e
发帖数: 14401
15
第一个建议,不要用MySQL 那样局限你的思路
f******2
发帖数: 2455
16
谢谢。
这篇和我上面的思路类似,具体用什么key-value store都是后续问题。
http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html#comment20928338


: 看 high scalability web site啊,有许多基于real life的 design sample 文档

: http://highscalability.com/display/Search?moduleId=4876569

【在 r********e 的大作中提到】
: 看 high scalability web site啊,有许多基于real life的 design sample 文档
: http://highscalability.com/display/Search?moduleId=4876569&searchQuery=feed
: 看完了后给大家讲讲你的选择,感觉在不同的traffic volume阶段有不同的答案。

w********m
发帖数: 1137
17
把leetcode的design twitter,用push和pull各写一遍就可以了。
p**r
发帖数: 5853
18
https://www.youtube.com/watch?v=gX8S7b8UYl8
个人建议
#1
follow list不建议存在一个field里面,删除的时候麻烦。
弄个userRelationship存,有变化之后,push到cache层去,
读的时候从cache层读。
#2
push或pull真不好说,同意readingJoe的不同阶段不同处理,
可以发散思维成,不同用户级别不用处理。
f******2
发帖数: 2455
19
leetcode还有系统design的题目?是免费的吗?


: 把leetcode的design twitter,用push和pull各写一遍就可以了。



【在 w********m 的大作中提到】
: 把leetcode的design twitter,用push和pull各写一遍就可以了。
w********m
发帖数: 1137
20
https://leetcode.com/problems/design-twitter/#/description

【在 f******2 的大作中提到】
: leetcode还有系统design的题目?是免费的吗?
:
:
: 把leetcode的design twitter,用push和pull各写一遍就可以了。
:

r********e
发帖数: 39
21
最近碰到了类似的实际问题,这里有MongoDB的一个解法,稍微旧了点,2014年的slide
https://www.slideshare.net/mongodb/socialite-the-open-source-status-feed-
part-3-scaling-the-data-feed
User relation 它推荐用double relationship table/index, 这样有利于sharding 和
index查询,具体见他 part 2 的 slide
https://www.slideshare.net/mongodb/socialite-pt-2
1 (共1页)
进入Programming版参与讨论
相关主题
int F::*x = &F::x是什么意思?any php experts?
c++ 里用到pointer 的地方我们尽可能用smart pointer吗? how to do it ?=======Problem – coding in c++
不如各位高手挑个专题讲讲C++11吧is smart_ptr really that good?
Go adopts JavaScript’s idea of semicolon insertion[合集] pointer in C
[bssd]Get a lifepointer overflow
Why do I need to use "plain" pointer?about STL functor and function pointers
一个简单的小问题what's the purpose of pointer to pointers?
请问可以这样定义struct吗?C++ Q05: pointer to constant variable
相关话题的讨论汇总
话题: feed话题: table话题: content话题: entry话题: design