【电商DMP平台】分群方案

相关概念

分群,指相同实体类型的实体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图

分群&ADS数据库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`)
);
上一篇
下一篇