Stwzhj-Cloud-Plus/stwzhj-modules/stwzhj-baseToSt/README.md

4.5 KiB
Raw Blame History

设备数据同步功能

功能介绍

本模块实现了从本地MySQL数据库定时抽取设备数据到目标PostgreSQL数据库的功能。每个地市部署一个程序实例从本地MySQL数据库抽取数据到统一的目标PostgreSQL数据库。

主要特性

  1. 轻量化设计移除了nacos等微服务相关依赖只保留了必要的功能
  2. 增量同步根据目标表中的info_source查询该地市最新更新的数据然后从源表中抽取
  3. 设备类型映射通过sys_dict_data字典表进行设备类型转换
  4. 批量处理:支持批量插入和更新,提高同步效率
  5. 可配置所有配置通过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 * * * ?

源表结构类型说明

本系统支持两种不同的源表结构:

  1. v1类型:第一种表结构

    • 字段使用下划线命名如police_no、police_name、phone_num等
    • 包含所有字段,包括录入单位、修改单位、设备品牌、设备型号等详细信息
  2. v2类型:第二种表结构

    • 部分字段使用驼峰命名如policeNo、policeName、phoneNum等
    • 只包含核心字段,不包含录入单位、修改单位、设备品牌、设备型号等详细信息

根据源数据库的表结构在配置文件中设置相应的source-table-type值。

数据同步逻辑

  1. 根据目标表中的info_source查询该地市最新更新的时间
  2. 从本地MySQL数据库查询更新时间大于该时间的所有设备数据
  3. 通过sys_dict_data字典表进行设备类型映射
  4. 根据device_code和info_source判断设备是否存在存在则更新不存在则新增
  5. 批量处理数据,提高同步效率

设备类型映射

设备类型映射通过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

定时任务

系统默认配置了两个定时任务:

  1. sendToSt设备数据同步到省厅原有功能
  2. syncDevicesFromSource从源数据库同步设备数据新增功能

定时任务的执行时间可以通过application.yml中的cron表达式进行配置。

使用说明

  1. 修改application.yml配置文件配置本地MySQL数据库和目标PostgreSQL数据库的连接信息
  2. 配置该地市的info_source标识
  3. 配置设备类型映射字典数据
  4. 启动应用,系统将自动执行定时同步任务

注意事项

  1. 确保源数据库和目标数据库的t_device表结构正确
  2. 确保sys_dict_data表中配置了正确的设备类型映射
  3. 首次同步时,如果目标表中无数据,将同步所有源数据
  4. 建议在非高峰期执行同步任务,避免影响业务系统性能
  5. 不同地市的info_source必须唯一否则会导致数据冲突