相关概念
分群,指相同实体类型的实体ID集合,实体类型通常由业务方定义。如用户运营系统下,分群实体即为人群;商品推荐系统下,分群实体即位商品包。
分群类型
- 标签规则分群:使用多个标签的与或非关系创建的分群。
- 上传分群:用户手动生成的实体id集合,导入系统。
- 算法分群:针对不同场景开发算法模型,根据用户的输入产出不同的实体id集合。
架构图
生产側数据流
生产側时序
消费側时序
创建并生产分群
删除分群
修改分群
分群到期
领域设计
分群
public class Group {
private String _groupId; // 分群ID
private String _groupName; // 分群名称
private GroupTypeEnum _groupType; // 分群类型
private Crowd _dsl; // dsl
private DslTypeEnum _dslType; // dsl类型
private String _adsId; // adsID
private StatusTypeEnum _statusType; // 当前状态
private String _tenantId; // 租户ID
private String _createdUserId;
private Date _createdAt;
private String _updatedUserId;
private Date _updatedAt;
private Date _expireAt; // 过期时间
}
ApplicationDataStore
public class ApplicationDataStore {
private String _adsId; // ADSID
private EngineKunlunExpression _dsl; // dsl
private BoostTypeEnum _boostType; // 触发类型:手动、每日
private ProductionInfo _productionInfo; // 生产结果
private Date _createdAt; // 创建时间
private Date _lastProducedAt; // 上次生产时间
private Date _expireAt; // 过期时间
}
public class ProductionInfo {
private DbDefinition _dbDefinition; // 数据库定义(存储位置)
private String _version; // 版本号
private Long _totalCount; // 结果数量
private Date _createdAt;
private Date _expireAt;
}
public class DbDefinition {
private String _db;
private String _table;
private String _partition;
}
库表结构
ER图
分群
CREATE TABLE `t_group` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`group_id` varchar(255) NOT NULL COMMENT '分群业务id',
`group_name` varchar(255) NOT NULL COMMENT '分群名称',
`group_type` tinyint NOT NULL COMMENT '分群类型',
`dsl` json NOT NULL COMMENT 'dsl定义',
`dsl_type` tinyint NOT NULL COMMENT 'dsl类型',
`ads_id` varchar(255) NULL COMMENT 'adsid',
`status_type` tinyint NOT NULL COMMENT '当前状态',
`tenant_id` varchar(255) NOT NULL COMMENT '租户id',
`created_user_id` varchar(255) NOT NULL COMMENT '创建用户id',
`created_at` timestamp NOT NULL COMMENT '创建时间',
`updated_user_id` varchar(255) NOT NULL COMMENT '更新用户id',
`updated_at` timestamp NOT NULL COMMENT '更新时间',
`expire_at` timestamp NULL COMMENT '过期时间',
PRIMARY KEY (`id`),
UNIQUE `biz_index` (`group_id`)
);
ADS
CREATE TABLE `t_ads` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`ads_id` varchar(255) NOT NULL COMMENT 'ads业务id',
`boost_type` tinyint NOT NULL COMMENT '启动类型',
`dsl` json NOT NULL COMMENT 'dsl定义',
`created_at` timestamp NOT NULL COMMENT '创建时间',
`last_produced_at` timestamp NULL COMMENT '上次生产时间',
`expire_at` timestamp NULL COMMENT '过期时间',
PRIMARY KEY (`id`),
UNIQUE `biz_index`(`ads_id`)
);
CREATE TABLE `t_ads_production` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`ads_id` varchar(255) NOT NULL COMMENT 'ads业务id',
`db_name` varchar(255) NOT NULL COMMENT '库名',
`table_name` varchar(255) NOT NULL COMMENT '表名',
`partition_name` varchar(255) NOT NULL COMMENT '分区名',
`version` varchar(255) NOT NULL COMMENT '版本号',
`total_count` bigint NOT NULL COMMENT '总数',
`created_at` timestamp NOT NULL COMMENT '生产时间',
`expire_at` timestamp NULL COMMENT '过期时间',
PRIMARY KEY (`id`),
UNIQUE `biz_index`(`ads_id`)
);