使用关系存储频繁请求的键值数据的有效方法?

时间:2015-08-29 09:01:35

标签: database database-design redis bigdata key-value

假设我正在建立Twitter。

其中一项任务是跟踪特定用户读取的推文,并将此数据存储在服务器上。当用户请求某人的订阅源时,服务器应返回:

[
  {
    id: 1,
    tweet: "Hey there!",
    isRead: false
  },
  {
    id: 2,
    tweet: "Here's my cat, look",
    isRead: true
  },
  {
    id: 2,
    tweet: "Blue or yellow? Thats the question",
    isRead: true
  },
  ...
]

哪种方法可以最有效地存储哪些用户读取推文的数据,并在为特定用户返回某人的 Feed时检索此数据?

有关数据存储架构的任何想法都受到高度赞赏。我目前的堆栈是PostgreSQL用于存储用户和“推文”。 Redis,MongoDB和neo4j也在项目中使用,因此可用。

第一个猜测是使用Redis,如:

user_id: tweet_id
-----------------
user_id: tweet_id
-----------------
....

但我认为,可能有更好的变体,更适合持久数据存储。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

看看Redis的作者antirez(a.k.a Salvatore Sanfilippo)制作的这个Twitter克隆:http://redis.io/topics/twitter-clone