4.5 KiB
4.5 KiB
设备数据同步功能
功能介绍
本模块实现了从本地MySQL数据库定时抽取设备数据到目标PostgreSQL数据库的功能。每个地市部署一个程序实例,从本地MySQL数据库抽取数据到统一的目标PostgreSQL数据库。
主要特性
- 轻量化设计:移除了nacos等微服务相关依赖,只保留了必要的功能
- 增量同步:根据目标表中的info_source查询该地市最新更新的数据,然后从源表中抽取
- 设备类型映射:通过sys_dict_data字典表进行设备类型转换
- 批量处理:支持批量插入和更新,提高同步效率
- 可配置:所有配置通过application.yml文件进行配置
部署架构
每个地市部署一个程序实例,从本地MySQL数据库抽取数据到统一的目标PostgreSQL数据库:
地市A实例 -> 本地MySQL A -> 目标PostgreSQL
地市B实例 -> 本地MySQL B -> 目标PostgreSQL
地市C实例 -> 本地MySQL C -> 目标PostgreSQL
配置说明
数据源配置
在application.yml中配置源数据库和目标数据库:
spring:
datasource:
dynamic:
primary: target #设置默认数据源为目标数据库
strict: false #严格匹配数据源
datasource:
# 源数据库(MySQL) - 每个地市配置不同的源数据库
source:
url: jdbc:mysql://localhost:3306/wzhj_hs
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
# 目标数据库(PostgreSQL) - 所有地市使用相同的目标数据库
target:
url: jdbc:postgresql://localhost:5432/your_database
username: postgres
password: postgres
driver-class-name: org.postgresql.Driver
设备同步配置
device-sync:
# 信息来源标识 - 每个地市配置不同的info_source
info-source: "3418"
# 源表结构类型 - v1或v2
# v1: 第一种表结构,字段使用下划线命名(如police_no)
# v2: 第二种表结构,部分字段使用驼峰命名(如policeNo)
source-table-type: v1
# 设备类型映射字典类型
dict-type: device_type_tost
# 批量插入大小
batch-size: 50
# 定时任务cron表达式
cron: 0 0/10 * * * ?
源表结构类型说明
本系统支持两种不同的源表结构:
-
v1类型:第一种表结构
- 字段使用下划线命名,如police_no、police_name、phone_num等
- 包含所有字段,包括录入单位、修改单位、设备品牌、设备型号等详细信息
-
v2类型:第二种表结构
- 部分字段使用驼峰命名,如policeNo、policeName、phoneNum等
- 只包含核心字段,不包含录入单位、修改单位、设备品牌、设备型号等详细信息
根据源数据库的表结构,在配置文件中设置相应的source-table-type值。
数据同步逻辑
- 根据目标表中的info_source查询该地市最新更新的时间
- 从本地MySQL数据库查询更新时间大于该时间的所有设备数据
- 通过sys_dict_data字典表进行设备类型映射
- 根据device_code和info_source判断设备是否存在,存在则更新,不存在则新增
- 批量处理数据,提高同步效率
设备类型映射
设备类型映射通过sys_dict_data字典表实现,配置规则如下:
- dict_type: device_type_tost
- dict_value: 源表的device_type值
- dict_label: 目标表的device_type值
示例:
| dict_type | dict_value | dict_label |
|---|---|---|
| device_type_tost | 1 | 1 |
| device_type_tost | 2 | 2 |
| device_type_tost | 北斗 | 1 |
| device_type_tost | 车载 | 2 |
定时任务
系统默认配置了两个定时任务:
- sendToSt:设备数据同步到省厅(原有功能)
- syncDevicesFromSource:从源数据库同步设备数据(新增功能)
定时任务的执行时间可以通过application.yml中的cron表达式进行配置。
使用说明
- 修改application.yml配置文件,配置本地MySQL数据库和目标PostgreSQL数据库的连接信息
- 配置该地市的info_source标识
- 配置设备类型映射字典数据
- 启动应用,系统将自动执行定时同步任务
注意事项
- 确保源数据库和目标数据库的t_device表结构正确
- 确保sys_dict_data表中配置了正确的设备类型映射
- 首次同步时,如果目标表中无数据,将同步所有源数据
- 建议在非高峰期执行同步任务,避免影响业务系统性能
- 不同地市的info_source必须唯一,否则会导致数据冲突