Структура Кассандры для комментариев и таблиц ответов на комментарии - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь создать веб-сайт, на котором пользователь может написать текстовое сообщение, другой пользователь может прокомментировать сообщение, и даже другой пользователь может ответить поверх комментария. Новичок в Кассандре, пожалуйста, помогите в создании модели данных для этого.

существующая модель данных ниже

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 голосов
/ 17 марта 2019

Я разработчик mongodb, а не разработчик cassandraDB, но я могу помочь вам с некоторыми моделями данных, я буду следовать синтаксису json для моделирования: {attr: value}

для комментария / ответа есть два способа:

  1. вставлять ответы в коллекцию комментариев (таблица в кассандре), например:

    {
    
    
        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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...