Reddit 目前正在将其数据库从 PosgreSQL 迁移到 Apache Cassandra。有人知道 Reddit 在 Cassandra 中使用什么数据库模式吗?
问问题
4258 次
1 回答
-2
我也不知道确切的 Reddit 架构,但对于您想要存档的内容,您的方式是正确的,将评论层次结构保存在基于文档的数据库而不是关系数据库中。我建议为每个根评论保留一个文档,然后将所有子项(以及子项的子项)添加到该评论中。
在 CouchDB 和 MongoDB 中,您可以直接存储 JSON 文档。在 Cassandra 中,我会将 JSON 保存为 String。所以数据结构只有
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 : []
}
]
}
]
}
此外,您可能希望在每条评论的结构中添加用户名、用户 ID、时间戳等。
如果您有大量数据,与规范化关系结构相比,这种“非规范化”结构将使查询变得非常快。
在任何情况下,您都必须处理所有例外情况,当您为大规模用户实施这样的系统时可能会发生这种情况,例如。如果有人用评论 B 回复评论 A,但同时(或稍后)评论 A 被删除,会发生什么情况。
如果您在 Internet 上搜索“cassandra 分层数据”,您会发现其他一些方法,但它们都返回到规范化,或者它们对于“无限”层次结构并不完整。
于 2014-01-02T06:03:41.407 回答