点赞服务
设计:
根据不同的产品,不同的业务类型,动态建表,利用simple-shardding实现分表, 根据businessId(业务ID)和userId(用户ID)做双向分表,每种业务类型默认8张表,然后根据productId和businessType确认具体的表名;
支持按多产品、多业务类型、多用户存储和查询
数据库设计
同步信息标识表
CREATE TABLE `synchro_sign` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',
`sign` tinyint(1) NOT NULL COMMENT '数据标识,用于从缓存往数据库同步数据',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
业务类型表
CREATE TABLE `business_type` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',
`business_type` varchar(25) NOT NULL COMMENT '业务类型',
`product_id` bigint(10) NOT NULL COMMENT '产品ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
用户在特定产品点赞数表(产品动态建表)
CREATE TABLE `user_favor_count` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',
`favor_count` int(8) NOT NULL DEFAULT '0' COMMENT '点赞量',
`operate_user_id` bigint(10) NOT NULL COMMENT '操作用户ID',
`create_time` bigint(10) NOT NULL COMMENT '创建时间',
`update_time` bigint(10) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `operate_user_id` (`operate_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
用户在特定产品特定业务类型点赞数表(产品和业务类型动态建表,用户ID分表)
CREATE TABLE `user_favor_count_21720_cut_activity_artifact` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',
`favor_count` int(8) NOT NULL DEFAULT '0' COMMENT '点赞量',
`operate_user_id` bigint(20) NOT NULL COMMENT '操作用户ID',
`create_time` bigint(10) NOT NULL COMMENT '创建时间',
`update_time` bigint(10) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `biz_id` (`operate_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
特定产品特定业务类型业务数据点赞数表(产品和业务类型动态建表)
CREATE TABLE `business_favor_count_21720_cut_activity_artifact` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',
`favor_count` int(8) NOT NULL DEFAULT '0' COMMENT '点赞量',
`business_id` varchar(40) NOT NULL COMMENT '业务数据ID',
`create_time` bigint(10) NOT NULL COMMENT '创建时间',
`update_time` bigint(10) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `biz_id` (`business_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
用户在特定产品特定业务类型点赞信息表(产品和业务类型动态建表,用户ID分8张表)
CREATE TABLE `user_favor_21720_cut_activity_artifact_0000` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',
`business_id` varchar(40) NOT NULL COMMENT '业务数据ID',
`operate_user_id` bigint(20) NOT NULL COMMENT '操作用户ID',
`favor_status` tinyint(1) NOT NULL COMMENT '点赞状态',
`create_time` bigint(10) NOT NULL COMMENT '创建时间',
`update_time` bigint(10) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `operate_user_id` (`operate_user_id`,`favor_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
特定产品特定业务类型业务数据点赞信息表(产品和业务类型动态建表,业务ID分8张表)
CREATE TABLE `business_favor_21720_cut_activity_artifact_0000` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键,唯一标识',
`business_id` varchar(40) NOT NULL COMMENT '业务数据ID',
`operate_user_id` bigint(20) NOT NULL COMMENT '操作用户ID',
`favor_status` tinyint(1) NOT NULL COMMENT '点赞状态',
`create_time` bigint(10) NOT NULL COMMENT '创建时间',
`update_time` bigint(10) NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `business_id` (`business_id`,`favor_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
用户在特定产品特定业务类型点赞操作历史表(产品和业务类型动态建表,用户ID分8张表)
CREATE TABLE `user_favor_history_21720_cut_activity_artifact_0000` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`business_id` varchar(40) NOT NULL,
`operate_user_id` bigint(20) NOT NULL,
`favor_status` tinyint(1) NOT NULL,
`create_time` bigint(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
特定产品特定业务类型业务数据点赞操作历史表(产品和业务类型动态建表,业务ID分8张表)
CREATE TABLE `business_favor_history_21720_cut_activity_artifact_0000` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`business_id` varchar(40) NOT NULL,
`operate_user_id` bigint(20) NOT NULL,
`favor_status` tinyint(1) NOT NULL,
`create_time` bigint(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
点赞操作相关接口
用户维度统计相关接口
业务维度统计相关接口
操作历史相关接口