CollisionAvoidanceSystem/change_log.md
Tian jianyong 05e080cb30 1. 创建车辆位置PostGIS实体类(VehicleLocation、Aircraft、VehicleTrajectory)
2. 创建机场区域PostGIS实体类(AirportArea)
3. 创建数据库迁移脚本(表结构、索引、分区)
4. 实现车辆位置Repository接口
5. 实现机场区域Repository接口
6. 创建PostGIS车辆服务(PostGISVehicleService)
7. 创建PostGIS区域服务(PostGISAreaService)
8. 创建统一空间查询服务(SpatialQueryService)
9. 实现区域配置导入工具(YAML到数据库)
10. 重构DataCollectorService(移除内存存储)
11. 重构AirportAreaService(基于数据库查询)
12. 移除MovingObjectRepository和相关内存存储代码
13. 移除AirportAreasProperties和YAML配置加载
14. 实现Redis缓存策略
15. 数据库连接池和性能优化配置
16. 创建单元测试和集成测试
2025-06-10 18:45:54 +08:00

13 KiB
Raw Blame History

碰撞避免系统变更日志

本文档记录碰撞避免系统的所有重要变更,包括新功能、改进和修复。

版本 0.6.7 (2024-12-19)

新增功能

  • 数据库连接池优化: 实现HikariCP连接池完整配置和性能优化
    • 配置HikariCP连接池参数最大连接数20最小空闲连接5连接生命周期管理
    • 添加PostgreSQL性能优化参数预编译语句缓存、批量插入重写、超时设置
    • 配置PostGIS空间查询优化连接池针对空间查询的特殊配置
  • Hibernate性能调优: 全面优化JPA/Hibernate配置
    • 启用二级缓存和查询缓存配置JCache缓存工厂
    • 配置批量操作批量大小50排序插入/更新,版本化数据批处理
    • 优化空间数据处理PostGIS连接查找器空间查询fetch size配置
  • 数据库性能监控: 创建DatabasePerformanceConfig配置类
    • 实时连接池状态监控:连接使用率、等待线程数警告
    • Hibernate统计信息收集查询执行次数、缓存命中率、事务统计
    • 定期性能报告每5分钟生成详细的数据库性能报告
    • 数据库健康检查通过Actuator endpoint提供连接池状态
  • 日志优化: 配置数据库和性能相关的详细日志
    • HikariCP连接池日志、Hibernate SQL日志、PostGIS空间查询日志
    • SQL参数绑定日志、事务日志、查询性能日志
    • 优化日志格式,便于性能分析和问题排查

技术改进

  • 连接池管理: HikariCP替代默认连接池提供更好的性能和监控
  • 缓存策略: 多层缓存配置,提升查询性能,减少数据库负载
  • 批处理优化: 针对PostGIS空间数据的批量操作优化
  • 监控体系: 完整的数据库性能监控和告警机制

版本 0.6.6 (2024-12-19)

修复

  • SQL表结构修正: 修正PostGIS数据库表结构确保与JPA实体类完全匹配
    • 修正airport_areas表字段名称:
      • area_namename
      • area_typetype
      • geometryboundary
      • is_activeenabled
    • 新增area_id字段,对应实体类的区域标识符
    • 扩展表字段以支持实体类的所有属性:
      • 添加speed_limit_kphrestricted等基础限制字段
      • 添加allowed_vehicle_typesallowed_aircraft_types JSONB字段
      • 添加max_heightmax_weight等扩展限制字段
      • 添加active_timeexpiry_time时间控制字段
    • 修正vehicle_locations表字段:
      • 添加data_quality字段,移除accuracydata_source字段
      • 统一时间戳字段类型为TIMESTAMP
    • 更新所有相关索引名称和示例数据,确保与新表结构一致

技术改进

  • 数据库兼容性: 确保Spring Data JPA能够正确映射实体类到数据库表
  • 空间索引优化: 更新PostGIS空间索引以匹配新的字段名称
  • JSONB查询支持: 优化车辆类型和航空器类型的JSONB字段索引

版本 0.6.5 (2024-12-19)

新增功能

  • 实现PostGIS Redis缓存策略完整架构
    • 扩展RedisConfig配置支持PostGIS实体类序列化VehicleLocation、AirportArea
    • 创建CacheConstants常量定义类统一管理缓存键前缀和过期时间
    • 新增VehicleLocationCacheService车辆位置缓存服务
      • 支持车辆最新位置缓存和轨迹数据缓存
      • 实现批量操作和缓存失效策略
      • 提供缓存统计和清理功能
    • 新增AirportAreaCacheService机场区域缓存服务
      • 支持区域配置数据缓存和空间查询结果缓存
      • 实现区域类型索引缓存和缓存预热功能
      • 提供区域变更时的缓存刷新机制
    • 新增SpatialQueryCacheService空间查询缓存服务
      • 基于地理网格的缓存策略
      • 支持车辆半径查询和冲突检测结果缓存
      • 实现缓存失效和清理机制
  • 分层缓存策略设计
    • 热数据车辆最新位置30秒过期
    • 温数据车辆轨迹和空间查询结果60-300秒过期
    • 冷数据区域配置和统计数据3600秒过期
  • 缓存穿透保护和性能优化机制

[0.6.4] - 2024-12-19

修复

  • 重写AirportAreaServiceIntegrationTest.java测试文件
    • 移除对已删除的areas.service.AirportAreaServiceAirportAreaConfig的依赖
    • 改为测试新的PostGIS版本的common.service.AirportAreaService
    • 使用JTS几何对象和PostGIS空间查询功能
    • 添加@Transactional注解和setUp方法来管理测试数据
    • 测试空间查询、几何验证、区域重叠检测等PostGIS功能
  • 修复所有编译错误测试现在与PostGIS架构完全兼容

[0.6.3] - 2025-01-09

移除

  • YAML配置系统清理: 移除机场区域相关的YAML配置加载机制
    • 删除 AirportAreasProperties.java - 机场区域顶层配置属性
    • 删除 AreaProperties.java - 单个区域配置属性
    • 删除 AirportAreaConfig.java - 机场区域配置加载类
    • 删除重复的 areas.service.AirportAreaService - 避免与PostGIS版本冲突

重构

  • 统一服务架构: 现在所有机场区域操作都通过PostGIS common.service.AirportAreaService 进行
    • 消除了YAML配置与数据库存储的双重架构
    • 统一数据源为PostGIS数据库
    • 简化了服务层依赖关系

保留

  • 道路网络配置: 保留 GeometryProperties.java 以支持道路网络的YAML配置
    • 道路网络仍使用YAML配置方式
    • 确保道路配置功能不受影响

技术优化

  • 架构简化: 消除了类名冲突和循环依赖
  • 数据一致性: 所有区域数据现在统一从PostGIS获取
  • 维护性提升: 减少了重复代码和冗余配置

[0.6.2] - 2025-01-09

移除

  • MovingObjectRepository内存存储: 完全移除内存存储仓库及其相关代码
    • 删除 MovingObjectRepository.java 内存存储实现
    • 重构 GeopositionController.java 以使用PostGIS VehicleLocationService
    • 清理测试配置中的MovingObjectRepository引用

改进

  • WebSocket服务升级: GeopositionController现在基于PostGIS数据库提供实时数据
    • 新增按车辆类型查询的WebSocket接口
    • 新增全部车辆位置查询接口
    • 提供更准确的实时位置数据(基于数据库而非内存)
    • 增强异常处理和日志记录

技术优化

  • 数据一致性: 所有位置数据现在统一从PostGIS数据库获取
  • 性能提升: 利用数据库索引优化查询性能
  • 可扩展性: 支持更复杂的空间查询和历史数据分析

[0.6.1] - 2025-01-09

改进

  • 系统架构简化: 删除DataProcessor组件简化数据处理流程
    • 移除 DataProcessor.java 及其相关依赖
    • 清理测试代码中的DataProcessor引用
    • 数据现在直接通过DataCollectorService保存到PostGIS数据库无需中间处理层

技术优化

  • 减少组件复杂度: 消除不必要的数据处理中间层
  • 提升维护性: 简化代码结构,减少组件间耦合
  • 优化数据流: 数据采集直接入库,减少内存占用和处理延迟

[0.6.0] - 2025-06-10

新增

  • PostGIS数据模型迁移完成: 完全替换内存存储实现基于PostGIS的车辆位置和机场区域数据管理
  • VehicleLocation实体类: 支持PostGIS POINT类型的车辆位置存储包含时间戳、数据质量等字段
  • AirportArea实体类: 支持PostGIS GEOMETRY类型的机场区域存储支持POLYGON/MULTIPOLYGON包含JSONB限制信息
  • VehicleLocationRepository: 提供丰富的PostGIS空间查询接口半径查询、区域查询、轨迹查询等
  • AirportAreaRepository: 提供全面的PostGIS空间查询接口包含查询、相交查询、重叠检测、优先级处理等
  • VehicleLocationService: 车辆位置服务类,提供完整的空间查询、轨迹分析、数据验证和管理功能
  • AirportAreaService: 机场区域服务类,提供空间查询、区域管理、冲突检测、几何验证等功能
  • SpatialQueryService: 综合空间查询服务类,提供冲突检测、轨迹分析、区域密度分析等高级功能
  • PostGIS数据库表结构: 完整的车辆位置表、机场区域表、轨迹表,配置空间索引、触发器、数据清理函数

改进

  • 数据存储架构: 从内存STRtree索引改为PostgreSQL + PostGIS持久化存储
  • 空间查询性能: 利用PostGIS GIST索引大幅提升空间查询性能
  • 数据一致性: 通过数据库事务和约束确保数据一致性
  • 扩展性: 支持大规模数据存储和复杂空间查询

修复

  • Lombok兼容性: 升级Lombok版本到1.18.38解决与JDK 17.0.15的兼容性问题
  • 编译错误: 修复MovingObjectType枚举类型和JSONB字段序列化相关编译错误
  • 依赖管理: 优化PostGIS和Hibernate Spatial依赖配置

技术栈更新

  • 数据库: PostgreSQL 17 + PostGIS扩展
  • ORM: Spring Boot JPA + Hibernate Spatial
  • 空间数据: JTS几何库 + PostGIS原生函数
  • 坐标系: 统一使用WGS84 (SRID 4326)

[0.5.3] - 2025-06-10

PostGIS空间扩展集成

  • PostGIS扩展支持: 为PostgreSQL添加强大的空间数据处理能力
    • 添加 hibernate-spatial 依赖支持JPA空间数据类型
    • 添加 postgis-jdbc 扩展v2023.1.0
    • 更新Hibernate方言为 PostgisPG95Dialect
    • 创建PostGIS扩展初始化脚本

空间数据功能

  • 支持POINT和POLYGON空间数据类型
  • SRID 4326WGS84坐标系统支持GPS坐标
  • 提供空间查询示例ST_Contains、ST_DWithin、ST_Distance
  • 空间索引GIST优化查询性能

项目能力提升

  • 精确的机场围栏检测
  • 高效的碰撞预测和距离计算
  • 优化的轨迹分析和历史查询
  • 为实时空间分析奠定技术基础

[0.5.2] - 2025-06-10

数据库技术栈升级

  • PostgreSQL 17 迁移: 将数据库从MySQL切换到PostgreSQL 17
    • 替换 mysql-connector-javapostgresql 驱动v42.7.1
    • 更新数据源配置:jdbc:postgresql://localhost:5432/collision_avoidance
    • 更新Hibernate方言为 PostgreSQLDialect
    • 数据保留策略调整为 postgresql-days

技术优势提升

  • PostgreSQL原生支持更强大的JSON和空间数据处理
  • 为未来PostGIS空间扩展奠定基础
  • 更好的并发性能和查询优化
  • 符合现代开发的主流技术选型

[0.5.1] - 2025-06-10

架构重构

  • 数据库迁移: 移除MongoDB依赖统一使用关系型数据库
    • 移除 spring-boot-starter-data-mongodb 依赖
    • 添加 spring-boot-starter-data-jpa 依赖
    • 移除主应用类中的 @EnableMongoRepositories 注解

技术栈简化

  • 采用关系型数据库作为统一数据存储方案
  • 配置JPA/Hibernate用于ORM映射

配置优化

  • 数据库名:collision_avoidance
  • Hibernate配置ddl-auto: update 用于开发阶段表结构自动更新
  • 启用SQL日志输出便于开发调试

[0.5.0] - 2025-04-29

新增

  • 通过 geojson_to_yaml.py 脚本将GIS 系统导出的道路地理信息文件转换为 YAML 格式的配置文件airport_roads.yaml

[0.4.0] - 2025-04-21

新增

  • 道路网络服务 (RoadNetworkService),实现道路网络的配置文件处理和查询功能
  • 道路网络配置文件 (airport_roads.yaml),定义机场的道路网络信息
  • 机场区域服务 (AirportAreaService),实现机场区域的配置文件处理和查询功能
  • 机场区域配置文件 (airport_areas.yaml),定义机场的区域信息

[0.3.0] - 2025-03-31

新增

  • 坐标系统服务 (CoordinateSystemService)实现WGS84到局部坐标系的转换
  • 速度计算服务 (SpeedCalculationService),处理移动物体的动力学参数
  • processLoop方法实现,支持持续数据处理流
  • 航空器、特种车辆和无人车的数据处理流程

改进

  • 优化数据采集模块与数据处理模块的交互接口
  • 实现异步处理机制,提高系统响应速度
  • 增强坐标转换精度支持UTM分区自动计算

修复

  • 修复速度计算中的时间戳异常处理问题
  • 处理轨迹历史记录超出最大限制的情况

[0.2.0] - 2025-03-16

新增

  • 数据采集模块完整功能实现
  • 多数据源适配器支持机场API和第三方车辆API
  • 移动物体模型定义,包含基类和三种具体类型
  • 历史状态记录和轨迹分析基础功能
  • 数据仓库组件,提供数据存储和检索功能
  • RestTemplate配置支持外部API调用

改进

  • 重构配置管理,支持不同环境下的配置切换
  • 实现授权服务优化API认证流程

修复

  • 修复数据采集过程中的并发问题
  • 修复连接超时导致的数据丢失问题

[0.1.0] - 2025-03-3

新增

  • 系统基础架构设计
  • 项目框架搭建包括Maven配置和依赖管理
  • 基础配置类实现包括线程池、Redis和WebSocket配置
  • 数据模型初步定义
  • 系统文档结构建立

改进

  • 完善日志系统,支持不同级别的日志记录
  • 建立开发规范,统一代码风格和文档格式