此博客用于个人学习,来源于网上,对知识点进行一个整理。
1. 根据 Binlog 对象构造增量数据:
接下来利用 Binlog 对象去构造增量数据,然后将增量数据投递出去,构建增量索引。在构建增量数据之前,先去做一些准备工作。因为我们将 Binlog 解析出来的对象看起来还是比较复杂,里面一些元素对于投递工作去构建增量索引是不需要的。所以我们需要对这个对象进行简化。
1.1 准备工作:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MySqlRowData {
//数据库名
private String tableName;
//数据表的层级
private String level;
//定义的操作数据类型
private OpType opType;
private List<Map<String, String>> fieldValueMap = new ArrayList<>();
}
在 OpType 中实现将 EventType 类型转化为 OpType 类型的方法:
/**
* EventType 到 OpType 数据的转换
* @param eventType
* @return
*/
public static OpType to(EventType eventType){
switch (eventType){
case EXT_WRITE_ROWS:
return ADD;
case EXT_UPDATE_ROWS:
return UPDATE;
case EXT_DELETE_ROWS:
return DELETE;
default:
return OTHER;
}
}
定义一个类 Constant 实现对表的定义以及定义表需要解析的各个列。
public class Constant {
private static final String DB_NAME = "imooc_ad_data";
public static class AD_PLAN_TABLE_INFO {
public static final String TABLE_NAME = "ad_plan";
public static final String COLUMN_ID = "id";
public static final String COLUMN_USER_ID = "user_id";
public static final String COLUMN_PLAN_STATUS = "plan_status";
public static final String COLUMN_START_DATE = "start_date";
public static final String COLUMN_END_DATE = "end_date";
}
public static class AD_CREATIVE_TABLE_INFO {
public static final String TABLE_NAME = "ad_creative";
public static final String COLUMN_ID = "id";
public static final String COLUMN_TYPE = "type";
public static final String COLUMN_MATERIAL_TYPE = "material_type";
public static final String COLUMN_HEIGHT = "height";
public static final String COLUMN_WIDTH = "width";
public static final String COLUMN_AUDIT_STATUS = "audit_status";
public static final String COLUMN_URL = "url";
}
public stat