1

考虑以下情况:

我有一个页面,它将包含以下字段:

pageid, title, content, like, follow, field1, field2..., field100, pagecomments, images

喜欢和关注是计数器字段,每次点击都会增加。

现在我正在考虑通过Cassandra以下方式设计它:

**TYPE A** page_table { 
    page_id, 
    title, 
    content, 
    like, 
    follow,
    posted_by,
    datetime,
    image1,
    image2,
    field1,
    field2..., 
    field100
}

page_comments {
    commentid, 
    page_id,text, 
    comment_like, 
    posted_by,
    datetime
}

**TYPE B** page_table {
    page_id, 
    title, 
    content,
    posted_by,
    datetime,
    image1,
    image2,
    field1,
    field2...,
    field100
}

page_like {
    page_id, 
    like
}
page_follow {
    page_id, 
    follow
}

page_comments {
    commentid, 
    page_id,
    text, 
    comment_like, 
    posted_by,
    datetime
}

哪一个是最好的方法?或者为此建议一些好的Cassandra数据库设计,使用CQL

4

1 回答 1

0

您可能想阅读一些 noSQL 模式

https://github.com/deanhiller/playorm/wiki/Patterns-Page

如果您要从页面中获取所有评论,我看不到评论的任何 FK,您将需要在page_table精简版中,该页面缺少模式。我将添加哪个是toMany经常nosql嵌入在行中的,而不是有一个索引。所以你在很多设计中都有这个。

page_table {  
    page_id, 
    title, 
    content, 
    like, 
    follow,
    posted_by,
    datetime,
    image1,
    image2, 
    fktocomment1, 
    fktocomment2, 
    fktocomment3 
}

通常所做的fktocomment1是以单词“comment”为前缀的,因此您可以通过剥离注释部分并在末尾使用 fk 来找到所有 fk(没有价值!)。这是一个复合名称模式,你可以用谷歌搜索。

编辑:模式页面编辑/添加了它很常见的模式,我以前从未想过添加它。

于 2013-02-03T01:20:47.830 回答