Reddit中使用的Cassandra数据库模式是什么?

时间:2012-04-30 08:19:27

标签: cassandra database-schema reddit

Reddit目前正在将其数据库从PostgreSQL迁移到Apache Cassandra。有人知道Reddit在Cassandra中使用了什么数据库模式吗?

1 个答案:

答案 0 :(得分:-1)

我也不知道确切的Reddit架构,但对于您想要存档的内容,您采用正确的方式,在基于文档的数据库而不是关系数据库中保存注释层次结构。我建议为每个根注释保留一个文档,然后将所有子项(以及子项的子项)添加到该注释中。

在CouchDB和MongoDB中,您可以直接存储JSON文档。 在Cassandra中,我会将JSON保存为字符串。所以数据结构只是

root-comments
{
    root-comment-id
    root-comment-json-string
}

并且每个root-comment-json-string看起来像这样:

{
comment : "hello world"
answers : 
[
    {
    comment : "reply to hello world"
    answers : 
    [
        {
        comment : "thanks for the good reply"
        answers : []
        },
        {
        comment : "yes that reply was indeed awesome"
        answers : []
        }

    ]
    }

]
}

另外,您可能希望在每条评论的结构中添加UserName,UserID,Timestamp,....等。

如果您有大量数据,这种“非规范化”结构将使查询与标准化关系结构相比非常快。

在任何情况下,您都必须处理所有例外情况,例如,当您为大用户规模实施此类系统时,可能会发生这种情况。如果有人用评论B回复评论A,但同时(或稍后)评论A被删除,会发生什么。

如果您在互联网上搜索“cassandra分层数据”,您会发现其他一些方法,但它们都会恢复正常化,或者它们对于“无限”层次结构并不完整。