用于评论和评论回复表的Cassandra结构

时间:2019-03-17 11:29:51

标签: java database spring-boot cassandra

我正在尝试创建一个网站,用户可以在其中写文本,其他用户可以对帖子发表评论,甚至其他用户也可以对评论进行回复。 Cassandra的新手,请帮助创建数据模型。

下面的现有数据模型

CREATE TABLE users (
    user_id uuid,
    first_name text,
    last_name text,
    email text,
    created_date timestamp,
    PRIMARY KEY (userid)
);

CREATE TABLE user_credentials (
    email text,
    password text,
    userid uuid,
    PRIMARY KEY (email)
);


CREATE TABLE user_posts (
  user_id uuid,
  post_id timeuuid, 
  content text,
  PRIMARY KEY (user_id, post_id) )
WITH CLUSTERING ORDER BY (post_id DESC);


Create TABLE comment_by_post (
  post_id timeuuid,
  user_id uuid,
  comment_date timestamp, 
  context text ,
  primary key (post_id,user_id,comment_date))
WITH CLUSTERING ORDER BY (comment_date);


Create Table comment_by_user (
  post_id timeuuid ,
  user_id uuid,
  comment_date timestamp ,
  content text,
  primary key (user_id,post_id,comment_date))
WITH CLUSTERING ORDER BY (comment_date);

1 个答案:

答案 0 :(得分:0)

我是mongodb开发人员,而不是cassandraDB开发人员,但我可以为您提供一些数据模型,我将按照json语法进行建模:{attr:value}

评论/回复有两种方法:

  1. embade在评论集合(cassandra中的表)中答复如下:

    {
    
    
        commentID : 1,
        userID : 12,
        postID : 15,
        text : "some comment",
        /*other fields*/
        replies : [
    
            {
                replyID : 1,
                userID : 16,
                text : "some reply"
            },
            {
                replyID : 2,
                userID : 35,
                text : "some reply"
            },
        ]
     }
    
  2. 为每个评论答复创建单独的集合(表):

评论:

{
    commentID : 1,
    userID : 12,
    postID : 15,
    text : "some comment",
    /*other fields*/
}

回复:

{
    replyID : 1,
    replyTo : 1,
    userID : 16,
    text : "some reply"
}

{
    replyID : 2,
    replyTo : 1,
    userID : 35,
    text : "some reply"
}