Database design 您将如何使用noSQL类型的数据库实现twitter?

Database design 您将如何使用noSQL类型的数据库实现twitter?,database-design,caching,twitter,nosql,Database Design,Caching,Twitter,Nosql,实现twitter/facebook这样的web应用程序似乎需要一个巨大的“提要”关系表(+一个用户表) 还有一个很棒的缓存机制。。(你能推荐一个吗?) 我的主要问题是,您将如何使用非关系数据库(例如键/值类型的数据库)实现这样的“功能” 显然,我想支持同时使用twitter的用户数量 谢谢您可以在这里阅读twitter是如何做到这一点的: 还请阅读以下内容: 没有数据模型,但有很多关于如何使用的信息;) 很明显,我想支持 使用twitter的用户数量 同时和一般地 很抱歉,这一要求远远不现实。

实现twitter/facebook这样的web应用程序似乎需要一个巨大的“提要”关系表(+一个用户表) 还有一个很棒的缓存机制。。(你能推荐一个吗?)

我的主要问题是,您将如何使用非关系数据库(例如键/值类型的数据库)实现这样的“功能”

显然,我想支持同时使用twitter的用户数量


谢谢

您可以在这里阅读twitter是如何做到这一点的:

还请阅读以下内容:

没有数据模型,但有很多关于如何使用的信息;)

很明显,我想支持 使用twitter的用户数量 同时和一般地

很抱歉,这一要求远远不现实。Twitter有一个巨大的服务器场来共享数据,以支持其大规模并发性,您的服务器是否与Twitter一样多

使用redis实现twitter克隆有一个体系结构的想法:

看看Kestrel,Twitter使用的消息队列系统


我会使用Redis。每个用户的密钥队列+这些密钥检索的blob集。

我将把MongoDB放入列表

模式将非常简单

推特
用户名(如果希望规范化一点,则为用户名)
TweetID(唯一的号码)
时间戳
Tweet(Tweet的文本)

用户
用户ID(可选) 用户名
姓名、电子邮件、个人信息(web url等) 密码(散列)
追随者(重复用户参考)

下面(重复用户参考)

我最近使用HBase编写了一个twitter数据层的最小实现。如果你感兴趣,你可以看看要点:。第一个文件CreateTwitterTable.java包含创建hbase表及其相关列族的代码。第二个文件TwitterClient.java包含基本函数的代码,如getTimeline、addTweet、deleteTweet、followUser、unfollowUser和addUser

您的问题的答案在很大程度上取决于twitter使用MySQL存储推文的确切数据库类型:我的问题不是twitter如何实现其解决方案,而是您将如何实现它?对于redis体系结构:像twitter那样添加分片和复制。好的,你如何高效地查询一个人正在关注的所有推文