1. 背景

  • 从2020.4.23至今2021.2.24 目前雷达轨迹表中的数据已接近三千万。
  • 读取并发量不高。
  • 数据增长较快。

2. 分表方案

2.1 涉及表

  • intelligent_radar_track
  • intelligent_radar_track_detail

    2.2 分表方案

    按照user_id的哈希取模分片,预计分每个表分64个子表。
    why:

  • 关于这两张表的查询几乎都是使用user_id作为where条件进行的。

  • 并发量不高,暂不考虑分库。
  • 64张子表足以支撑很多很多年。

2.3 分表工具

ShardingShphere-JDBC

2.4 数据迁移方案

雷达轨迹分表.png

数据迁移
从原始表查出数据,插入到新表中。

2.4.1 数据准确性如何校验

在迁移完成之后,通过数据校验程序,校验旧表和新表中的数据。如果数据存在不一致,根据date_update字段判断是否对新表进行更新。

2.4.2 数据库id问题

原先表使用自增id。

解决方案:
数据迁移完成之前,仍使用自增id。新插入的数据使用原表生成的自增id。
数据迁移完成之后,切换成分布式id,基于雪花算法。