CMS—评论设计

2023-12-14 17:43:32

一、需求分析?

1.1、常见行为

1.敏感词过滤
2.新增评论(作品下、评论下)
3.删除评论(作品作者、上级评论者、本级作者)
4.上级评论删除关联下级评论
5.逻辑状态变更(上线、下线、废弃...)
6.上逻辑状态变更关联下级评论
7.评论通知(作品作者、上级评论作者)
8.点赞通知
9.评论回复(下级品论者)
10.评论的已读未读
11.评论的媒体文件处理(包情包、图片)
12.评论赞、踩
13.一级评论查询(分页、倒排)
14.上级评论关联下级评论(分页、倒排)
15.评论数量统计
16.可见范围(自己、上级、粉丝)
17.操作范围(允许他人评、点、踩)
18.评论置顶(权重排序)
19.作者点赞显示

1.2、数据特性

1.评论层级设计(两、三层)
2.数据量大如何存储、查询
3.赞、踩的高并发

二、使用案例?

2.1、结构设计?

暂用Mysql数据库

CREATE TABLE `cms_comments` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `work_id` bigint DEFAULT NULL COMMENT '作品ID',
  `work_user_id` bigint DEFAULT NULL COMMENT '作品作者ID',
  `work_user_like` tinyint NOT NULL DEFAULT '1' COMMENT '作者点赞(1不赞,2点赞)',
  `comment_user_id` bigint DEFAULT NULL COMMENT '评论人ID',
  `comment_time` timestamp NULL DEFAULT NULL COMMENT '评论时间',
  `parent_id` bigint DEFAULT NULL COMMENT '上级ID(一级评论为作品ID)',
  `reply_user_id` bigint DEFAULT NULL COMMENT '被回复用户ID(三级时用)',
  `read_status` tinyint NOT NULL DEFAULT '1' COMMENT '阅读状态(1未阅读、2已阅读、3其它)',
  `level` tinyint NOT NULL DEFAULT '1' COMMENT '级别(1一级;2二级;3三级)',
  `state` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '01' COMMENT '评论状态(01草稿、02待审核、03未通过、04已上线、05已下线、06删除)',
  `comment_content` varchar(150) DEFAULT NULL COMMENT '评论内容',
  `top_status` tinyint NOT NULL DEFAULT '1' COMMENT '置顶状态(1不置顶,2置顶)',
  `like_number` bigint DEFAULT '0' COMMENT '点赞数',
  `remark_number` bigint DEFAULT '0' COMMENT '评论数',
  PRIMARY KEY (`id`),
  KEY `work_id` (`work_id`) USING BTREE,
  KEY `work_user_id` (`work_user_id`) USING BTREE,
  KEY `comment_time` (`comment_time`),
  KEY `reply_user_id` (`reply_user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='内容评论表—JunSouth';

2.2、数据量过大—处理

低价值数据,且不涉及修改,和金额处理,可采用MongoDB数据库。

1.内置了 MapReduce 引擎,数据分片,水平扩展性好,便于做集群。
2.通过 Journal日志(预写日志)、Oplog日志(操作记录)保证数据可靠。
3.支持主键索引、单字段索引、组合索引等,基本与Mysql一致。
4.查询功能与 SQL 相似。
5.支持字段扩展。

2.3、高并发—处理?

... ... ...?

文章来源:https://blog.csdn.net/weixin_42679286/article/details/134692610
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。