2014-03-13 24 views
0

假设我正在关注1000多个用户。当我登录Twitter时,我会看到来自我所关注的1000位用户的推文的按时间顺序排列的列表。 Twitter如何获取这些推文。Twitter如何高效地检索用户的推文供稿?

我知道他们会做这样的事情:

select * from tweets where userID in (id_1,id_2,...,id_n) limit 50 order by time; 

然而,“在”条款可真慢。

how twitter works, does it use "in" to select tweets for followers?

Twitter like Model using SQL Server/Azure or Graph DB

说矛盾的东西,引用链接是老和死。

那么,Twitter如何有效地从我关注的人那里得到所有推文呢?

回答

0

有一个blog post是去深入了解Twitter的数据库基础架构:

当你鸣叫它存储在一个名为T-鸟的内部系统,这 是建立在胃囊的顶部。二级索引存储在称为T-flock的单独的 系统中,该系统也是基于Gizzard的。每个推文的 的唯一ID由Snowflake生成,在整个群集中可以更均匀地 分片。 FlockDB用于ID到ID的映射, 存储ID之间的关系(使用Gizzard)。 Gizzard是 Twitter的分布式数据存储框架,构建于MySQL (InnoDB)之上。选择InnoDB是因为它不会破坏数据。 Gizzard 只是一个数据存储。数据被输入,然后再次返回。到 在单个节点上获得更高性能时,许多功能如 二进制日志和复制都被关闭。 Gizzard处理分片,复制N个数据和作业调度。在Twitter上,Gizzard使用 作为其他存储系统的构建块。

看来您发布的第一个链接是正确的,二是只是建议的模式,你可以使用来实现类似Twitter的数据库结构。

因此,要回答您的问题,所有推文都基于它们被推送的时间和给定的唯一ID进行存储,这些ID是索引的。然后,FlockDB管理ID之间的关系,即确定谁跟随谁以及谁看到什么推文的关系。

+0

所有使用FlockDB的Twitter提到至少2岁或3岁。并且FlockDB尚未在2年内更新,http://en.wikipedia.org/wiki/FlockDB。是否有任何帖子提示Twitter在2014年仍然使用FlockDB,或者他们已经转移到其他地方。 –

+0

@FrancisSnipe如果您从2013年8月开始阅读Twitter的[博客文章](https://blog.twitter.com/2013/new-tweets-per-second-record-and-how),它表示他们转移到了Gizzard /雪花系统的存储和它已经满足了他们的需求。他们最近更新的基础架构是从Ruby VM到Java VM的变化。 –

相关问题